我正在尝试通过以下方式将事件处理程序附加到动态创建的 DOM 元素:
var createdElement = $('<a>', {
click: function (data) {
alert("click");
}
});
这按预期工作,但现在我想将一个变量传递给 click 函数。谁能建议如何做到这一点。
我正在尝试通过以下方式将事件处理程序附加到动态创建的 DOM 元素:
var createdElement = $('<a>', {
click: function (data) {
alert("click");
}
});
这按预期工作,但现在我想将一个变量传递给 click 函数。谁能建议如何做到这一点。
代码悖论的答案在一般情况下有效,但总是将相同的值传递给click
处理程序,而不管它<a>
被触发的元素是什么。
如果您希望该值取决于单击的元素,则可以在元素本身上调用on() :
var createdElement = $("<a>").on("click", {
yourData: "something"
}, function(event) {
alert("Data is " + event.data.yourData);
}).appendTo("body");
但是,上面的代码使用的语法与您问题中的语法不同。如果您想继续click
在属性/事件映射中定义处理程序,您可以使用data()将值与元素一劳永逸地关联起来:
var createdElement = $("<a>", {
click: function() {
alert("Data is " + $(this).data("yourData"));
}
}).data("yourData", "something").appendTo("body");
(请注意,我添加了对 的调用,appendTo("body")
因此新元素成为 DOM 的一部分,并且click
事件有机会被触发。如果您稍后在代码中将元素添加到 DOM,请随意忽略这一点。)