为多个元素分配一个事件处理程序?

时间:2014-02-05 19:02:53

标签: javascript jquery html css events

好的,我已经完成了建议的q / a,但他们似乎没有清楚地回答这个问题。

我想减少混乱,并且一次将一个事件处理程序分配给多个图像,而不是单独分配。这是具有重复代码的当前代码:

$(document).ready(function(){

      $("#div1 img:eq(0)").mouseenter(function(){
                     $(this).css("border","1px solid green"); 
     })

      $("#div1 img:eq(1)").mouseenter(function(){
                     $(this).css("border","1px solid green); 
     })

      $("#div1 img:eq(2)").mouseenter(function(){
         $(this).css("border","1px solid green"); 
     })

})

在简单的javascript中我可能做过类似的事情:

div1imgs=documentGetElementById("div1").getElementsByTagName("img");

for(i=0; i<div1imgs.length; i++) {
 div1imgs[i].onmouseover=function(){this.style.border="1px solid green"}

使用它很诱人,但我进入jquery并且更喜欢保持它jquery。在jquery中是否有一些等效的解决方案,希望更简单的是同时为一组图像分配事件处理程序?还使用循环,否则?

1 个答案:

答案 0 :(得分:2)

根据您的vanilla js版本,它将是:

$("#div1 img").mouseenter(function () {
    $(this).css("border","1px solid green"); 
});

注意,当您使用jQuery将事件绑定到多个元素时,它将自动遍历每个单独的元素以执行绑定。