• jQuery插件的写法


    jquery插件写法;

    jquery整体有两种使用形式;一种是$.ajax(),另一种是$(selector).xx();这两种方法的插件编写形式也有不同

    $.ajax();

    这里我仿照$.ajax()写了一个简单的求和的插件;

        $.extend({
            sum: function() {
                var sum = 0;
                for ( var i = 0, r = arguments.length; i< r; i++ ) {
                    sum += arguments[i];
                }
                return sum;
            }
        });
        var t = $.sum(0,1,2,3,4,5);
        console.log(t);
    

    $(selector).xx();

    这里是写的一个下拉菜单的插件;$(selector).xx()组件的写法里必然会出现一个jQuery(this)或者$(this)作为当前选择器;

        <style>
            .second,.third {
                display:none;
            }
            .show {
                display:block;
            }
        </style>
        <ul class="first">
            <li>
                <a href="javascript:;">女装</a>
                <ul class="second">
                    <li>
                        <a href="javascript:;">上衣</a>
                        <ul class="third">
                            <li><a href="javascript:;">毛衣</a></li>
                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;">裤子</a>
                        <ul class="third">
                            <li><a href="javascript:;">毛裤</a></li>
                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;">鞋子</a>
                        <ul class="third">
                            <li><a href="javascript:;">皮鞋</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
        <script src="//cdn.bootcss.com/jquery/2.2.2/jquery.min.js"></script>
        <script>
    
            $.fn.extend({
                clickMenu: function() {
    
                    if ( jQuery(this).siblings().hasClass('show') ) {
                        jQuery(this).siblings().removeClass('show');
                    } else {
                        jQuery(this).siblings().addClass('show');
                    }
                }
            })
    
            $('.first').on('click',function(e) {
                $(e.target).clickMenu();
            })
    
        </script>
    

    总结

    两种插件的写法都是扩展的jQuery的extend方法.神奇的是在jQuery中 jQuery.extend = jQuery.fn.extend = function() {}是同一个方法,这个
    extend是通过for……in……实现对象的copy功能;
    至于两者的区别?jQuery.extend,是将jQuery看成一个对象,而extend作为该对象的一个方法;
    jQuery.fn.extend 则由于jQuery.fn = jQuery.prototype = {},将jQuery作为一个实例化对象,jQuery.fn.extend是该对象上的原型方法.

  • 相关阅读:
    懒惰了
    android环境搭建问题总结(0基础)
    android初次配置运行环境
    android 模拟器黑屏
    MapReduce——求每年最高气温
    MapReduce——调用HDFS
    11.Mapreduce实例——MapReduce自定义输出格式小
    MapReduce——Docker服务安装
    10.Mapreduce实例——MapReduce自定义输入格式
    Docker镜像操作——Mysql安装
  • 原文地址:https://www.cnblogs.com/zhaowinter/p/6437696.html
Copyright © 2020-2023  润新知