单行中Javascript中的以下语句相当于什么?
$("#element1,#element2").on("click", runFunction);
答案 0 :(得分:2)
例如:
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);
只需删除换行符,它就会在一行中。
但是在ES6中你可以接近:
for(var el of document.querySelector(/* selector */)) el.addEventListener('click', f, false);
答案 1 :(得分:1)
简单地通过不在代码中保留任何空间来做到这一点
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);}
答案 2 :(得分:0)
几乎可以肯定,你真正想要的是:
.on()
documentation) 这是每个人正在寻找的东西,即使他们还没有意识到这一点;)
不要直接将处理程序绑定到元素上 - 将处理程序绑定到父元素(可能是&lt; body&gt;),并使用jQuery的事件委托模型来指定筛选冒泡子事件的选择器。在以下情况中,我们在<body>
上放置了一个点击处理程序,该处理程序指定用于触发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'));
});