有没有办法设置绑定优先级?
我有这样的链接:
<a href="" class="popItUp" data-track"stuff"> </a>
popItUp绑定以获取网址并在弹出窗口中打开。
data-track是另一种用于发送事件跟踪数据的绑定。
问题: 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
答案 0 :(得分:4)
为什么不简单地阻止默认操作,而不是返回false?
$('.popItUp').click(function(e)
{
e.preventDefault();
// Do Stuff
});
这样,事件没有被取消,它只是没有执行默认操作。
答案 1 :(得分:2)
首先绑定popItUp
处理程序,如果returns false
data-track binding
,则不会调用data-track binding
。您需要首先绑定popItUp
,如果您想要给它更多的优先级而不管data-track binding
做什么。
查看已修改的问题,live
使用popItUp
完成,该returns false
适用于事件冒泡机制。如果e.preventDefault();
处理程序popItUp
那么它就无法运行。可能是您可以尝试使用{{1}}锚来防止默认行为,而不是在{{1}}处理程序中返回false。
答案 2 :(得分:2)
live
的工作原理是捕捉冒出<body>
标记的事件。
因此,任何直接添加到元素的处理程序都将在live
处理程序之前运行
在直接处理程序中调用stopPropagation()
(或return false
)可以防止它冒泡,因此live
将无法捕获它。