jquery事件句柄如何组合成一个?

时间:2013-03-20 07:39:59

标签: jquery events

当我使用jquery时,它比以前更方便,但有些问题会让我困惑如下:
我有两个锚点,它们的代码几乎相同,但我不能将它们合并为一个。

 
<a class="p" href="javascript:;">ABC</a>   
<a class="n" href="javascript:;">EFG</a>
$(function(){

   var p = $('a.p');
   var n = $('a.n');

  p.on('mouseover',function(){
       $(this).css('color','red');
   }).on('mouseout',function(){
       $(this).css('color','black');
  });

  n.on('mouseover',function(){
     $(this).css('color','red');
  }).on('mouseout',function(){
     $(this).css('color','black');
  });

});

// You know it in javascript,we can do like this:

n[0].onmouseover = p[0].onmouseout = function(){ ....}

//and how about in jquery?

3 个答案:

答案 0 :(得分:2)

$(function(){
  $('a.p,a.n').on('mouseover',function(){
       $(this).css('color','red');
   }).on('mouseout',function(){
       $(this).css('color','black');
  });
});

请参阅选择多个元素的文档here

答案 1 :(得分:0)

至少有三种方式。结合选择器:

$( 'a.p, a.n' ).on('mouseover',function(){
    $(this).css('color','red');
}).on('mouseout',function(){
    $(this).css('color','black');
});

...或对两者使用相同的功能。

var mouseoverevent = function() {
    $(this).css('color','red');
};

var mouseoutevent = function() {
    $(this).css('color','black');
};

p.on('mouseover', mouseoverevent).on('mouseout', mouseoutevent);
n.on('mouseover', mouseoverevent).on('mouseout', mouseoutevent);

(后者在这个简单的例子中有点矫枉过正,但在更复杂的情况下很有用。)

如果你想保留变量,第三种方法是组合它们:

p.add( n ).on('mouseover',function(){
    $(this).css('color','red');
}).on('mouseout',function(){
    $(this).css('color','black');
});

答案 2 :(得分:0)

使用multiselector并悬停..

$(function(){
  $('a.p,a.n').hover(function(){
    $(this).css('color','red');
  },function(){
    $(this).css('color','black');
  });
});