2013-03-20 41 views
1

当我使用jquery时,它比以前更方便,但有些问题会使我困惑如下:
我有两个锚,它们的代码几乎相同,但我无法将它们合并为一个。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? 

回答

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

查看的文档,用于选择多个元素here

+0

你需要在这个第二部分或者这是一个复制粘贴错误? “n.on('mouseover',...”? – Dutts 2013-03-20 07:44:05

+0

当我写道:$(n,p).on(...)。(....)时,它对我来说不起作用 – 2013-03-20 07:44:13

+0

@RyanLi你不能把两个变量都作为选择器,而是把选择器合并在一起,所以'$(“ap,an”)'完全丢弃变量 – JJJ 2013-03-20 07:45:40

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'); 
}); 
+0

我喜欢第一个。谢谢你@Juhana。 – 2013-03-20 07:48:34

0

使用多功能和悬停..

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