我有点困惑,我有一堆元素,通过使用ajax调用通过jQuery添加,我想附加一个点击处理程序给他们(可能有很多)。
但我不知道如何开始这个,我看着.on,它真的很混乱。我想为某个类添加一个点击事件处理程序,这样当我点击它时,我会得到this.id
,然后做些什么。
我有点困惑,我有一堆元素,通过使用ajax调用通过jQuery添加,我想附加一个点击处理程序给他们(可能有很多)。
但我不知道如何开始这个,我看着.on,它真的很混乱。我想为某个类添加一个点击事件处理程序,这样当我点击它时,我会得到this.id
,然后做些什么。
你想要做的事就是所谓的事件委托。
您希望将事件侦听器设置在DOM中一个永远不会更改的较高元素上,但只有在被点击的子元素与特定选择器匹配时才触发事件处理函数。
下面是它与jQuery的.on()
完成:
$(document).on('click', '.your-selector', function(){
alert(this.id);
});
附:您可以将事件侦听器可能适用于一个元素在DOM树低了下去......
这将让你与类“测试”被点击的元素的ID ...
$(".test").on("click", function() {
var id = $(this).attr("id")
});
您需要在 ajax调用返回后运行。它只会将click事件绑定到它运行时存在的元素,所以它在document.ready中不是很好。
那么你的或弓箭手的答案是更好的表现明智吗? – Steven 2012-01-18 20:15:49
这会起作用,但几乎总会有比文档更好的听众。为了举例说明,因为你知道它总能正常工作。但是当Steven开始使用这些代码时,他应该意识到他应该选择最近的未被破坏的祖先元素。 – 2012-01-18 20:17:40
@Steven - 比什么都好?这是您唯一的选择(除非您想在每次AJAX请求后重新绑定处理程序)。这是做到这一点的正确方法(尽管如前所述,您应该将其绑定到最低可能的DOM节点上)。 – 2012-01-18 20:18:16