这就是事情 - 一个click事件在页面上添加了一堆元素,它们都有相同的id(这里有什么问题吗?)。
我使用实时函数将click事件分配给所有这些元素:
$("#tag").live('click', function() {
console.log($("#tag").html());
});
当我点击其中任何一个时,只会记录第一个元素的值。
如何让click事件知道我实际点击了哪些元素? 非常感谢!
更新:使用类和$(this)是要走的路。问题解决了。谢谢格里格斯和约翰!
答案 0 :(得分:1)
尝试使用$(this).val()
或$(this).html()
修改强>
如果你想循环遍历所有thr #tag元素,那么你仍然可以使用$(this)来检查你正在循环的元素的被点击标记。如果这是有道理的。
btw:为什么你有多个具有相同ID的元素?那有点糟糕。更好的方法可能是拥有可以引用并将事件附加到公共类名的元素。
答案 1 :(得分:1)
如果添加的元素确实都具有相同的ID,而不是相同的类,则这是一个问题。如果您需要帮助,则需要发布添加元素的代码。
我可以从您发布的代码中看到您将live方法附加到.tag类,但在函数内部,您指的是ID #tag的元素。您可能想要了解classes and IDs之间的区别。
试试这个,解决问题:
$(".tag").live('click', function() {
console.log($(this).html());
});
或者,您可以执行以下操作来获取单击的元素:
$(".tag").live('click', function(event) {
console.log($(event.target).html());
});