Javascript 如何绑定到所有单击事件,检查属性。。。。有效地?

Javascript 如何绑定到所有单击事件,检查属性。。。。有效地?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我想创建一个捕获所有点击事件的绑定。然后,如果单击的项目具有数据跟踪属性,请执行某些操作 这样做的有效方法是什么?我能不能把身体绑起来,让所有的事情都发生。有没有关于如何以及如何有效地做到这一点的建议 谢谢使用带有属性选择器[data track]的委托在文档级别附加click事件处理程序 使用带有属性选择器[data track]的委托在文档级别附加click事件处理程序 您应该追求简单而不是性能:让jQuery为您完成这项工作,并假设jQuery开发人员比您更擅长优化JS,除非您能证明不是这

我想创建一个捕获所有点击事件的绑定。然后,如果单击的项目具有数据跟踪属性,请执行某些操作

这样做的有效方法是什么?我能不能把身体绑起来,让所有的事情都发生。有没有关于如何以及如何有效地做到这一点的建议

谢谢

使用带有属性选择器[data track]的委托在文档级别附加click事件处理程序

使用带有属性选择器[data track]的委托在文档级别附加click事件处理程序


您应该追求简单而不是性能:让jQuery为您完成这项工作,并假设jQuery开发人员比您更擅长优化JS,除非您能证明不是这样

使用jQuery选择器为具有数据跟踪属性的所有元素设置实时单击处理程序:

$('[data-track]').live('click', function () {

});

您应该追求简单而不是性能:让jQuery为您完成这项工作,并假设jQuery开发人员比您更擅长优化JS,除非您能证明不是这样

使用jQuery选择器为具有数据跟踪属性的所有元素设置实时单击处理程序:

$('[data-track]').live('click', function () {

});

为什么不将单击事件仅绑定到具有数据轨迹属性的项目

$('[data-track]').click(function() {
    var data_track = $(this).attr('data-track');
    //code here
});

为什么不将单击事件仅绑定到具有数据轨迹属性的项目

$('[data-track]').click(function() {
    var data_track = $(this).attr('data-track');
    //code here
});
我想这样说:

$('*[data-track]').click(function(ev){
     // do something
});
或者如果一些这样的内容来自Ajax

$('*[data-track]').live('click', function(ev){
    // do something 
});
我想这样说:

$('*[data-track]').click(function(ev){
     // do something
});
或者如果一些这样的内容来自Ajax

$('*[data-track]').live('click', function(ev){
    // do something 
});

是否必须捕获所有单击事件?如果您仅在具有数据轨迹属性的情况下才执行某些操作,我相信您应该能够执行以下操作:

$*[data track]。单击函数{//执行操作}


我不确定这与其他方法相比效率如何,尽管我认为由于jQuery在窗口级别捕获所有事件,它应该没有什么区别。

您必须捕获所有单击事件吗?如果您仅在具有数据轨迹属性的情况下才执行某些操作,我相信您应该能够执行以下操作:

$*[data track]。单击函数{//执行操作}


我不确定这与其他方法相比效率如何,尽管我认为,由于jQuery在窗口级别捕获所有事件,它应该不会有什么不同。

oops,键入的时间似乎与其他所有方法相同!哎呀,好像是在和其他人一样的时间打字!如果绑定了其他内容,比如弹出窗口方法,那么这会阻止触发吗?我的结论是:如果您的事件处理程序通过返回false或调用event.stopPropagation来停止传播,那么是的,它将阻止实时处理程序触发。谢谢,您的回答非常好。这是另一个问题。打开一个新的q。如果绑定了其他内容,比如弹出窗口方法,那么这会阻止触发吗?我的结论是:如果您的事件处理程序通过返回false或调用event.stopPropagation来停止传播,那么是的,它将阻止实时处理程序触发。谢谢,您的回答非常好。这是另一个问题。打开一个新的q。