javascript - jQuery 添加的表单元素无法被选中

标签 javascript jquery html forms

如果描述不合适,我深表歉意。很难描述发生了什么。

我已经设置了一个 jsFiddle here .

function addNewForm() {
    $('body').html(function () { //display log in form
        return "<input type=\"text\" placeholder=\"Word or Phrase\" id=\"prompt\" />\n" +
            "<textarea id=\"answer\" placeholder=\"Answer text\"></textarea>\n" +
            "<input type=\"button\" id=\"addnew\" value=\"Add This!\" />\n" +
            "<p>&nbsp;</p>";
    });
}

$("#addnew").click(function () {
    $("p").html("ADD NEW CLICKED<br />");
});

$("a").click(function () {
    addNewForm();
});

我的语法正确吗?出于某种原因,$("#addnew").click 在其自身函数之外生成时有效,但按钮停止工作,因为我已经整理了我的代码并将其置于其自身的函数中。 jQuery 可能无法识别通过函数创建的元素是否有原因?

干杯!

最佳答案

当您尝试附加 onclick 时事件处理程序到 #addnew , 该元素当时不存在。
将表单添加到 DOM 或使用 delegated events 时需要附加它

$(document).on("click", "#addnew", function () {
    $("p").html("ADD NEW CLICKED<br />");
});

您可能还希望在单击 <a> 时阻止页面重新加载链接

$("a").click(function (e) {
    e.preventDefault();
    addNewForm();
});

修复了 jsfiddle:https://jsfiddle.net/5rb6koog/

关于javascript - jQuery 添加的表单元素无法被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854395/

相关文章:

javascript - 通过Ajax表单发送数据

javascript - 将下拉列表添加到通过 Javascript 生成的元素

javascript - TypeError : $(. ..).selectize 不是函数

javascript - Nodejs 后面写的连接套接字如何保存?

javascript - 通过 id-Extjs 将数据加载到模型中

javascript - Mootools Fx.Scroll() 给出错误/延迟的 div.getScroll()

Jquery数据表:set the class on the filter input field

jquery - 在 jQuery UI 菜单小部件中隐藏子菜单图标

java - Paypal 沙盒立即购买问题

JavaScript Canvas 代码不起作用