Jquery结合代码

时间:2015-02-03 23:11:28

标签: jquery

对于这个非常简单的问题感到抱歉,但我怎样才能在Jquery下面合并? 问题是如何设置:

 $('.cmb2 OR .cmb3 OR .cmb4').hover(function () 
 $('.cm2 OR .cm3 OR .cm4 DEPENDS ON WHAT IS HOVERED IN ABOVE LINE ').addClass('cmactive');

完整代码:

 $('.cmb2').hover(function ()
 {
 $('.cmactive').hide();
 $('.cmactive').removeClass('cmactive');
 $('.cm2').addClass('cmactive');
 $('.cm2').show();
 });

$('.cmb3').hover(function ()
{
$('.cmactive').hide();
$('.cmactive').removeClass('cmactive');
$('.cm3').addClass('cmactive');
$('.cm3').show();
});

$('.cmb4').hover(function ()
{
$('.cmactive').hide();
$('.cmactive').removeClass('cmactive');
$('.cm4').addClass('cmactive');
$('.cm4').show();
});

3 个答案:

答案 0 :(得分:2)

您可以使用逗号组合器组合选择器:

$('.cmb2,.cmb3,.cmb4').hover(function ()

在事件处理程序中,上下文(this)是触发事件的元素,因此您可以检查该元素的类以找出要显示的元素。

$('.cmb2,.cmb3,.cmb4').hover(function () {
  $('.cmactive').hide().removeClass('cmactive');
  var target =
    $(this).hasClass('cmb2') ? '.cm2' :
    $(this).hasClass('cmb3') ? '.cm3' :
    '.cm4';
  $(target).addClass('cmactive').show();
});

答案 1 :(得分:1)

使用逗号列出选择器列表,如果将其分配给变量,则可以在回调函数中对所有选择器进行操作。

var $cmbs = $('.cmb2, .cmb3, .cmb4');

$cmbs.hover(function () 
    $(this).addClass('cmactive');
    $cmbs.not(this).removeClass('cmactive');
});

答案 2 :(得分:0)

为什么不为它们中的所有三个添加一个公共类,然后排队呢?或者,您可以使用这样的CSS选择器:$('[class^="cmb"]')。您还可以通过用逗号分隔所需内容来选择多个类,这样就可以$('.cmb2, .cmb3, .cmb4')