jQuery:将变量传递给动态创建的DOM元素的单击处理程序

时间:2012-07-29 06:51:25

标签: jquery variables click selector dynamically-generated

我试图通过以下方式将事件处理程序附加到动态创建的DOM元素:

var createdElement = $('<a>', {
    click: function (data) {
        alert("click");
    }
});

这可以按预期工作,但现在我想将一个变量传递给click函数。任何人都可以建议如何做到这一点。

1 个答案:

答案 0 :(得分:2)

Codeparadox的答案适用于一般情况,但总是将相同的值传递给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。)