jQuery如何设置绑定顺序

jQuery how to set a Binding Order

本文关键字:绑定 定顺序 设置 何设置 jQuery      更新时间:2023-09-26

有没有办法将绑定设置为优先级?

我有一个这样的链接:

<a href="" class="popItUp" data-track"stuff"> </a>

popItUp绑定以获取url并在弹出窗口中打开。

数据跟踪是用于发送事件跟踪数据的另一个绑定。

问题:popItUp返回false,并且永远不会触发数据轨道绑定。有没有一种方法总是让jQuery先运行数据跟踪,因为它总是返回true?

感谢

代码

// Mixpanel Click Tracking
$('[data-track]').live('click', function () {
    console.log('track it please');
});
$('.popItUp').popupWindow({height:300,width:600,centerBrowser:1});

popUpWindow是一个插件:http://swip.codylindley.com/popupWindowDemo.html

与其返回false,为什么不简单地阻止默认操作呢?

 $('.popItUp').click(function(e)
 {
      e.preventDefault();
      // Do Stuff
 });

这样,事件就不会被取消,只是不会执行默认操作。

如果首先绑定了popItUp处理程序,如果是returns false,则不会调用data-track binding。如果你想给data-track binding更多的优先级,而不管popItUp做什么,你需要先绑定它。

看看您编辑过的问题,data-track binding是使用live完成的,它使用事件冒泡机制。如果popItUp处理程序returns false,则它将不起作用。您可以尝试使用锚的e.preventDefault();来防止默认行为,而不是在popItUp处理程序中返回false。

live的工作原理是捕获冒泡到<body>标记的事件。

因此,任何直接添加到元素的处理程序都将在live处理程序之前运行
在直接处理程序内部调用stopPropagation()(或return false(将防止其冒泡,因此live不会捕获它。