jQuery的链式编程风格

jQuery的链式编程风格javascript

首先本人经过一个案例来展现jQuery的链式编程风格。先写一个页面,展现一个列表,代码以下:java

<body>
    <div>
        <ul class="menu">
            <li class="level1">
                <a href="#">水果</a>
                <ul class="level2">
                    <li><a href="#">苹果</a></li>
                    <li><a href="#">菠萝</a></li>
                    <li><a href="#">香瓜</a></li>
                </ul>
            </li>
            <li class="level1">
                <a href="#">主食</a>
                <ul class="level2">
                    <li><a href="#">面条</a></li>
                    <li><a href="#">馒头</a></li>
                    <li><a href="#">米饭</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>

<script type="text/javascript">
    $(function() {
        $(".level1 > a").click(function() {
            $(this).addClass("current").next().show().parent.siblings().children("a").removeClass("current").next().hide();
            return false;
        });
    });
</script>

代码执行后的效果以下图所示:编程

 

 上述代码的扩展效果就是经过jQuery的链式操做实现的,全部增长current类的操做、查询子元素的方法调用、动画方法的调用等都是对同一个元素进行的,因此在开始获取到一个jQuery对象后,后面的全部方法、属性的调用都经过 “.” 进行连续调用便可,这种模式就是链式操做。ide

为了增长代码的可读性和可维护性,咱们将上面的链式代码格式的修改以下:动画

<script type="text/javascript">
    $(function() {
        $(".level1 > a").click(function() {
            // 给当前的元素添加current样式
            $(this).addClass("current")
                // 下一个元素显示
                .next().show()
                // 父元素的同辈元素的子元素a移除current样式
                .parent.siblings().children("a").removeClass("current")
                // 他们的下一个元素隐藏
                .next().hide();
            return false;
        });
    });
</script>

通过规范格式的调整后,增长了代码的易读性,更加方便后期的维护。this

与此同时,咱们对于同一个jQuery对象进行链式操做时,主要遵循下面3条格式规范。spa

(1)对于同一个对象不超过3个操做,能够直接写成一行,代码以下:code

<script type="text/javascript">
    $(function() {
        $("li").show().unbind("click");
    });
</script>

(2)对于同一个对象的较多操做,建议每行写一个操做,代码以下:对象

<script type="text/javascript">
    $(function() {
        $(this).removeClass("mouseout")
            .addClass("mouseover")
            .stop()
            .fadeTo("fast", 0.5)
            .fadeTo("fast", 1)
            .unbind("click")
            .click(function() {
                .......
            });
    });
</script>

(3)对于多个对象的少许操做,能够每一个对象写一行,若是涉及子元素,能够考虑适当的缩进。代码以下:blog

<script type="text/javascript">
    $(function() {
        $(this).addClass("highLight")
            .children("a").show().end()
            .siblings().removeClass("highLight")
            .children("a").hide();
    });
</script>

以上就是有关jQuery的链式编程风格。

相关文章
相关标签/搜索