单击事件绑定多个位置,如何确定优先级并触发特定事件

时间:2014-05-02 10:20:50

标签: jquery

所有事件都作为我们引导程序的一部分绑定。例如,锚标记带有' bootstrapclick' class被绑定到click事件。现在,我想在锚点元素上编写额外的验证,所以我编写了一个函数onclick事件。但这是在引导点击事件后触发的。

表格

<a href='#' id='mylink' class='bootstrapclick'> Click here </a>

JQuery的

var link = $('#mylink')[0]; //=> document.getElementById('mylink');
link.onclick = function(e) {
     //do additional validation
     //and prevent bootstrap click event
};

建议如何优先处理我的点击事件,以便我可以阻止触发bootstrap的点击事件。

3 个答案:

答案 0 :(得分:0)

试试这个

编辑:这将触发文档就绪 - 它将删除绑定到此控件的所有事件,并将使用您的逻辑添加onclick事件处理程序。如果在文档准备好之后添加了引导程序事件处理程序,则需要在添加它之后找到它并将其删除x.off();应该这样做。

$(function(){ 
var x = $('#mylink'); 
x.off();
x.on('click', function(){

//...
});
});

答案 1 :(得分:0)

使用addEventListener捕获事件:{so event将在任何传播事件之前触发}

  

如果为true,则useCapture表示用户希望启动   捕获。启动捕获后,指定类型的所有事件   将在发送之前发送给注册的听众   到DOM树下面的任何EventTargets。事件是   向上冒泡树不会触发听众   指定使用捕获。

var link = $('#mylink')[0]; //=> document.getElementById('mylink');
link.addEventListener("click", function(e){
     //do additional validation
     //and prevent bootstrap click event
     if(notValid) // or whatever you use to validate
         e.stopImmediatePropagation(); // this will prevent bootstrap click handler to be fired
}, true);

现在我不确定bootstrap如何绑定自己的事件。

答案 2 :(得分:0)

在jquery中使用.off()

$('#mylink').on("click" , function(event) {
       $(this).off("click");
       event.preventDefault()
       // do stuff here
 }