2011-05-11 74 views
0

我的页面分为vertically两部分。 Left part就像一个菜单部分。点击 任何菜单都会在页面的right part中显示与该菜单相关的正确数据。我 使用ajax call这样做,唯一的div on the right part得到刷新。我使用jquery点击事件的.. 说:为什么有时候jquery点击事件失败?

$("#left_part").click(function() { // ajax call here }); 

现在我对right part一些jquery action。 (说明隐藏一些也适用于click event.的div) 但是当new div reloads在右边部分那些click event on the right part不起作用。 但是,当我bind the click event它的作品。

说:

$("#some_right_part").click(function() {/ some hide show here)}; Not working 
$("#some_right_part").bind('click', function(event){ // some hide show here)}; works fine 

重要:当我在fresh page(没有AJAX调用尚未使右边部分)$("#some_right_part").click(function() {/ some hide show here)}; works fine.

但我知道的是:$().click(function)电话$().bind('click',function)

那么,背后的原因是什么?或什么是当你在页面加载时,单击事件被绑定到所有匹配的元素通过$().click分配一个click事件来解决这样的问题

感谢

+0

这应该不会像您所描述的那样失败,它可能是别的。如果你使用'click'发布你的整个代码块失败,这将是有帮助的。 – hunter 2011-05-11 13:39:49

回答

3

的完美方式。但是,当您执行ajax调用并接收新标记时,新元素不会与单击事件绑定,因为当您第一次调用$().click时,它们不存在。

有一种方法可以将点击事件绑定到所有可能创建的元素和所有将来的元素。您必须使用live这样的方法:

$('#elements').live('click', function() { 
    // do logic 
}); 
+0

代表们是否做同样的事情。 – Tauquir 2011-05-11 13:43:54

+0

是的,当然可以,两者都可以解决您的问题 – jcvandan 2011-05-11 13:46:08