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

标签 jquery variables click selector dynamically-generated

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

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

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

最佳答案

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,请随意忽略这一点稍后在您的代码中。)

关于jQuery:将变量传递给动态创建的 DOM 元素的点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707293/

相关文章:

javascript - 当用户点击图像时如何通过javascript更改图像

java - 如何在可折叠表格中一次只显示一行,切换

jquery - 检查列宽并相应调整

PHP/MYSQL - 可以在 mysql 字段值中使用 php 变量吗?

PHP 分配第一个非空值

c# - 等待按钮点击

jquery css 在另一个 div 上覆盖 div?

javascript - 如何删除某个div之后的div中的所有元素

javascript - 变量内的 if 语句

jQuery 动画在单击时向下滑动,但在单击时不向后滑动