2011-01-20 22 views
0

我们知道多次调用$(document).ready();在同一页面是可能的。我需要类似的点击事件。jQuery:在同一元素上执行多个操作,但是在两个不同的时间点

现状: 另一队实现了这个地方在外部JS文件:

$('#element').live('click', function() { /* Do this */}); 

这是对#element现场()点击收听。我无法修改此代码或该文件,但我需要对同一事件上的相同元素执行其他操作。所以,点击#element时会发生两个动作。换句话说,我需要这个等价物:

$('#element').live('click', function() { /* Do this */}); 
/* Some code later... */ 
$('#element').live('click', function() { /* Add another action */}); 

我试着做了上面的事情,但第二个调用不会触发。它必须是.live(),因为#element是动态添加的。

有什么办法可以将更多操作添加到#element上的相同事件上吗?谢谢。

+0

它看起来像他们的事件处理程序返回false。这会阻止我的电话吗? $(“#element”)。live('click',function(){p.log_in(); return false;}); – Stephen

回答

1

他们返回false,并且阻止您的事件被解雇。见http://api.jquery.com/bind/

返回从处理程序错误是 相当于事件 调用对象的两个 .preventDefault()和 .stopPropagation()。

+0

坚果...感谢您在jQuery文档中的引用。虽然我无法改变其他团队的代码,但我只是找到了另一种基于ChessWhiz的回答,通过不同方式查看问题来解决此问题的方法。我发现我的团队控制着HTML。我在#element上添加了一个新的类名,并使用.live()作为目标。这样可行。 – Stephen

0

我建议实际解除现有的live()调用,然后将其与自己的代码一起包含在您自己的方法中可能会更容易。假设你被允许并且这样做是可行的。

+0

他们的调用位于单独的库和名称空间中,因此我无法解除绑定并将其代码添加到我的代码中。 – Stephen

0

每次绑定事件处理程序时,都会将其安装在处理程序链上,所有这些都将被调用。因此,除了您不能更改的代码之外,您还可以绑定自己

+0

它看起来像他们的事件处理程序返回false。这会阻止我的加入吗? $(“#element”)。live('click',function(){p.log_in(); return false;}); – Stephen

相关问题