2012-01-18 154 views
0

我有点困惑,我有一堆元素,通过使用ajax调用通过jQuery添加,我想附加一个点击处理程序给他们(可能有很多)。

但我不知道如何开始这个,我看着.on,它真的很混乱。我想为某个类添加一个点击事件处理程序,这样当我点击它时,我会得到this.id,然后做些什么。

回答

3

你想要做的事就是所谓的事件委托。

您希望将事件侦听器设置在DOM中一个永远不会更改的较高元素上,但只有在被点击的子元素与特定选择器匹配时才触发事件处理函数。

下面是它与jQuery的.on()完成:

$(document).on('click', '.your-selector', function(){ 
    alert(this.id); 
}); 

附:您可以将事件侦听器可能适用于一个元素在DOM树低了下去......

+0

那么你的或弓箭手的答案是更好的表现明智吗? – Steven 2012-01-18 20:15:49

+1

这会起作用,但几乎总会有比文档更好的听众。为了举例说明,因为你知道它总能正常工作。但是当Steven开始使用这些代码时,他应该意识到他应该选择最近的未被破坏的祖先元素。 – 2012-01-18 20:17:40

+0

@Steven - 比什么都好?这是您唯一的选择(除非您想在每次AJAX请求后重新绑定处理程序)。这是做到这一点的正确方法(尽管如前所述,您应该将其绑定到最低可能的DOM节点上)。 – 2012-01-18 20:18:16

1

这将让你与类“测试”被点击的元素的ID ...

$(".test").on("click", function() { 
    var id = $(this).attr("id") 
}); 

您需要在 ajax调用返回后运行。它只会将click事件绑定到它运行时存在的元素,所以它在document.ready中不是很好。

+0

请参阅@ Joseph的回答。 – Anurag 2012-01-18 20:15:37

+0

那么你或约瑟夫的回答会更好的表现明智吗? – Steven 2012-01-18 20:17:01

+0

抱歉 - 我不明白。请看约瑟夫的回答什么? – Archer 2012-01-18 20:17:13

相关问题