假如有两个含有ID的元素,有没有一种可以同时给两个元素绑定相同事件的方法。
循环有点不太划算。但是复制两段看的又不舒服。原谅我的代码洁癖。。
谢谢大家这么多好点子。
假如有两个含有ID的元素,有没有一种可以同时给两个元素绑定相同事件的方法。
循环有点不太划算。但是复制两段看的又不舒服。原谅我的代码洁癖。。
谢谢大家这么多好点子。
。。简直是想要马儿跑,又不给马儿吃草的想法。。
最好看一点可能是。
function a() {}
b.onclick = a;
c.onclick = a;
或是用个jquery,然后加个统一的class例如为one,然后$('.one').on("click", a);
,虽然实际上jq帮你循环了,但是你看不到。
在洁癖的代码,如果只有两个elem需要加事件,封装一个回调函数,然后写上去就行了。
再简洁一点的做法,把addEventListener()这样的操作也封装到函数中。
function callback(event){};
function bindEvent(elem,even,callback){
elem.addEventListener(even, callback(event){}) // 举个例子而已
}
使用事件委托呀:绑定一个事件到所有目标元素的父元素上,当事件冒泡到父元素上的时候,判断event的target
属性,如果是目标的话就执行。
jQuery也提供了$('#parent').on('click', '.child', function() {})
的方法来实现事件委托。
如果只是要不循环多个元素绑定多个事件的写法的话,要是有两个不同的id,那直接
$('#elem1','#elem2').on('click',function(){
.....(操作)
})
要是两个id元素有关系的话,利用事件冒泡里将目标元素绑定到公共的父级元素里就好了
10 回答11.5k 阅读
4 回答3.4k 阅读✓ 已解决
2 回答3k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
哪有那么麻烦