如何获取在“实时”事件中使用ajax添加的元素值?

时间:2011-03-24 23:34:55

标签: javascript jquery

这就是事情 - 一个click事件在页面上添加了一堆元素,它们都有相同的id(这里有什么问题吗?)。

我使用实时函数将click事件分配给所有这些元素:

$("#tag").live('click', function() { console.log($("#tag").html()); });

当我点击其中任何一个时,只会记录第一个元素的值。

如何让click事件知道我实际点击了哪些元素? 非常感谢!

更新:使用类和$(this)是要走的路。问题解决了。谢谢格里格斯和约翰!

2 个答案:

答案 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()); 
});