Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中将单击事件分配给多个按钮?_Javascript_Jquery - Fatal编程技术网

如何在javascript中将单击事件分配给多个按钮?

如何在javascript中将单击事件分配给多个按钮?,javascript,jquery,Javascript,Jquery,在Javascript中,哪一行与以下语句等效 $("#element1,#element2").on("click", runFunction); 例如: var f = function() { /* Event handler */ }, els = document.querySelector(/* selector */); for(var i=0, l=els.length; i<l; ++i) els[i].addEventListener('click',

在Javascript中,哪一行与以下语句等效

$("#element1,#element2").on("click", runFunction);
例如:

var f = function() { /* Event handler */ },
    els = document.querySelector(/* selector */);
for(var i=0, l=els.length; i<l; ++i)
    els[i].addEventListener('click', f, false);

只需在代码中不保留任何空格即可

e1=document.getElementById('element1'),e2=document.getElementById('element2');if(addEventListener){e1.addEventListener('click',runFunction,false);e2.addEventListener('click',runFunction,false);}else{e1.attachEvent('click',runFunction);e2.attachEvent('click',runFunction);}

几乎可以肯定,你真正想要的是:

jQuery的事件委派 这是每个人都在寻找的,即使他们还没有完全意识到;)

不要直接将处理程序绑定到元素上——而是将处理程序绑定到父元素(可能),并使用jQuery的事件委派模型指定一个选择器,通过该选择器过滤冒泡子事件。在下面的例子中,我们在
上放置一个单击处理程序,该处理程序被指定为触发
a[href]
链接单击

// Handles all link clicks under the <body> tag (superior methodology -- much optimum)
$('body').on('click','a[href]',function(jqEvent){
  var $a = $(this);
  console.log("Link Clicked:",$a.attr('href'));
});

// Direct binding, which is essentially what the original asker had (inferior)
$('a[href]','body').on('click',function(jqEvent){
  var $a = $(this);
  console.log("Link Clicked:",$a.attr('href'));
});
//处理标签下的所有链接点击(高级方法——非常优化)
$('body')。在('click','a[href]',函数(jqEvent)上{
var$a=$(本);
log(“点击链接:”,$a.attr('href');
});
//直接绑定,本质上是原始询问者拥有的(低级)
$('a[href],'body')。在('click',函数(jqEvent)上{
var$a=$(本);
log(“点击链接:”,$a.attr('href');
});

我不是数学家,但是,还有不止一行吗?那就是两个元素的点击事件JQuery,我希望它转换为JavaScript。你在问如何在普通的老JavaScript中实现这一点吗?(没有jquery?@user3191903:jquery是Javascript在一行中没有等价物。“只要删除换行符,它就会在一行中。”这正是我的想法…;)
// Handles all link clicks under the <body> tag (superior methodology -- much optimum)
$('body').on('click','a[href]',function(jqEvent){
  var $a = $(this);
  console.log("Link Clicked:",$a.attr('href'));
});

// Direct binding, which is essentially what the original asker had (inferior)
$('a[href]','body').on('click',function(jqEvent){
  var $a = $(this);
  console.log("Link Clicked:",$a.attr('href'));
});