怎么把这三段jquery代码缩写成一段

    // 搭配
    $('.collocation .navList li').mouseover(function () {
        $(this).siblings().removeClass('navActive');
        $(this).addClass('navActive');
        $('.collocation .proR .proLi').eq($(this).index()).removeClass('hide').siblings().addClass('hide');
    });

    // 配件
    $('.parts .navList li').mouseover(function () {
        $(this).siblings().removeClass('navActive');
        $(this).addClass('navActive');
        $('.parts .proR .proLi').eq($(this).index()).removeClass('hide').siblings().addClass('hide');
    });

    // 周边
    $('.derivative .navList li').mouseover(function () {
        $(this).siblings().removeClass('navActive');
        $(this).addClass('navActive');
        $('.derivative .proR .proLi').eq($(this).index()).removeClass('hide').siblings().addClass('hide');
    });

如何让他们缩写呢???
尝试了很多方法没有成功。

阅读 1.9k
3 个回答

如下:

$('.collocation,.parts,.derivative').each(function(index,element){
    $(element).find('.navList li').mouseover(function () {
        $(this).siblings().removeClass('navActive');
        $(this).addClass('navActive');
        $(element).find('.proR .proLi').eq($(this).index()).removeClass('hide').siblings().addClass('hide');
    });
})
function doSomething(elem){
    $(elem).mouseover(function () {
        $(elem).siblings().removeClass('navActive');
        $(elem).addClass('navActive');
        $(elem).eq($(elem).index()).removeClass('hide').siblings().addClass('hide');
    });
}
doSomething('.derivative .navList li');
doSomething('.parts .navList li');
doSomething('.collocation .navList li');

修改一下:缓存JQ对象;

function doSomething(elem){
     var $elem = $(elem);
    $elem.mouseover(function () {
        $elem.siblings().removeClass('navActive');
        $elem.addClass('navActive');
        $elem.eq($elem.index()).removeClass('hide').siblings().addClass('hide');
    });
}
doSomething('.derivative .navList li');
doSomething('.parts .navList li');
doSomething('.collocation .navList li');
$('.collocation .navList li,.parts .navList li,.derivative .navList li').mouseover(function () {
    $(this).siblings().removeClass('navActive');
    $(this).addClass('navActive');
    
    var start = $(this).selector.split(" ")[0];

    $(start + ' .proR .proLi').eq($(this).index()).removeClass('hide').siblings().addClass('hide');
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题