首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合多个Hover函数

组合多个Hover函数
EN

Stack Overflow用户
提问于 2015-06-06 16:51:13
回答 2查看 57关注 0票数 4

我对jQuery相当陌生,我正试图找出是否有更好的方法来编写我在下面编写的jQuery代码。

我想知道我是否可以使代码更简洁,而不是为基本上相同的悬停效果编写一个函数。

HTML:

代码语言:javascript
复制
<form action="" method="post" class="rating-choice empty">
    <ul>
        <li class="one">
            <label><input type="radio" value="0.5" name="rating" id="rating-1" />0.5 stars</label>
        </li>
        <li class="two">
            <label><input type="radio" value="1" name="rating" id="rating-2" />1 star</label>
        </li>
        <li class="three">
            <label><input type="radio" value="1.5" name="rating" id="rating-3" />1.5 stars</label>
        </li>
        <li class="four">
            <label><input type="radio" value="2" name="rating" id="rating-4" />2 stars</label>
        </li>
        <li class="five">
            <label><input type="radio" value="2.5" name="rating" id="rating-5" />2.5 stars</label>
        </li>
        <li class="six">
            <label><input type="radio" value="3" name="rating" id="rating-6" />3 stars</label>
        </li>
        <li class="seven">
            <label><input type="radio" value="3.5" name="rating" id="rating-7" />3.5 stars</label>
        </li>
        <li class="eight">
            <label><input type="radio" value="4" name="rating" id="rating-8" />4 stars</label>
        </li>
        <li class="nine">
            <label><input type="radio" value="4.5" name="rating" id="rating-9" />4.5 stars</label>
        </li>
        <li class="ten">
            <label><input type="radio" value="5" name="rating" id="rating-10" />5 stars</label>
        </li>
    </ul>
</form>

jQquery:

代码语言:javascript
复制
$(document).ready(function(){
    $('.one').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-1');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-1');
        }
    );

    $('.two').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-2');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-2');
        }
    );

    $('.three').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-3');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-3');
        }
    );

    $('.four').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-4');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-4');
        }
    );

    $('.five').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-5');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-5');
        }
    );

    $('.six').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-6');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-6');
        }
    );

    $('.seven').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-7');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-7');
        }
    );

    $('.eight').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-8');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-8');
        }
    );

    $('.nine').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-9');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-9');
        }
    );

    $('.ten').hover(
        function(){
            $('.rating-choice').prevAll().addBack().addClass('rating-10');
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            $('.rating-choice').prevAll().addBack().removeClass('rating-10');
        }
    );  
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-06 16:56:55

只需将hover事件附加到li上,如下所示:

代码语言:javascript
复制
$(document).ready(function(){
    $('li').hover(
        function(){
            var classSuffix = $(this).find('input').attr('id').split('-')[1];
            $('.rating-choice').prevAll().addBack().addClass('rating-' + classSuffix);
            $('.rating-choice').nextAll().removeClass('empty');
        },
        function(){
            var classSuffix = $(this).find('input').attr('id').split('-')[1];
            $('.rating-choice').prevAll().addBack().removeClass('rating-' + classSuffix);
        }
    );
});
票数 2
EN

Stack Overflow用户

发布于 2015-06-06 16:55:02

您可以通过简单地添加所有li的另一个类或使用层次结构来实现这一点,并且只编写一个悬停函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30685287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档