jquery插件模式中this和this.each有什么区别?

时间:2017-03-22 18:31:44

标签: javascript jquery jquery-plugins

我正在阅读这个jQuery插件模式:https://github.com/jquery-boilerplate/jquery-patterns/blob/master/patterns/jquery.extend-skeleton.js我不明白在return语句中调用this上的每个函数的目的是什么?那取代了:

    ;(function($){
        $.fn.extend({
            pluginName: function( options ) {

                this.defaultOptions = {};

                var settings = $.extend({}, this.defaultOptions, options);

                return this.each(function() {

                    var $this = $(this);

                });

            }

        });

    })(jQuery);

如果我只是将this作为:

返回
;(function($){
    $.fn.extend({
        pluginName: function( options ) {

            this.defaultOptions = {};

            var settings = $.extend({}, this.defaultOptions, options);

            return this;

        }

    });

})(jQuery);

两者都一样。据我所知this充当插件中的选定元素。例如,如果我有三个带有test类的div,我会这样做:

$(".test").pluginName(); // returns an array of three div elements in both plugin styles  

据我所知$(".test")给出了一个包含三个dom元素的数组,pluginName被调用三次$(".test").pluginName();,并且三个返回的值被推送到最后返回的数组中。

请求解释为什么他们在return语句中使用this.each()而不是this

1 个答案:

答案 0 :(得分:0)

  

据我所知$(" .test")给出了一个包含三个dom元素的数组,pluginName被调用三次$(" .test")。pluginName() ;并且三个返回的值被推入一个最后返回的数组中。

这不正确。调用pluginName()一次,将此设置为与三个DOM元素对应的jQuery对象。因此使用this.each()以便循环遍历jQuery对象并为每个对象执行任何操作。