jQuery插件方法比man脚本中的函数慢

时间:2013-04-23 12:51:11

标签: jquery jquery-plugins

我得到了两个场景。第一个:

<script type="text/javascript">  

            $(document).ready(function() {
                $("#mybutton").actionTable();
            });

            function filter() {
                if ($("#form\\:dpkTable").length > 0) {
                        table.filter();
                }
            }


            function filtersAreUsed(){
                var found = false;
                $(".ui-column-filter").each(
                        function() {
                            if($(this).val().length > 0){
                                found = true;
                            };
                });
                return found;
            }                   

插件:

   (function($) {
        $.fn.actionTable = function(options) {
            // settings:
            var settings = $.extend({
                columnClassFilter : "ui-column-filter"
            }, options);

            // main:
            this.click(function() {
                if (filtersAreUsed()) {
                    filter();
                } else {
                    ...
                }
            });
            }
    })(jQuery);

第二种情况 - 我将函数filter()和filterAreUsed()移动到插件体:

<script type="text/javascript">  

    $(document).ready(function() {
        $("#form\\:button").actionTable();
    });


</script> 

插件:

(function($) {
    $.fn.actionTable = function(options) {
        // settings:
        var settings = $.extend({
            columnClassFilter : "ui-column-filter"
        }, options);

        // main:
        this.click(function() {
            if (filtersAreUsed()) {
                filter();
            } else {
                onSearch();
            }
        });

        function filter() {
            if ($("#form\\:dpkTable").length > 0) {
                table.filter();
            }
        }

        function filtersAreUsed() {
            var found = false;
            $(".ui-column-filter").each(function() {
                if ($(this).val().length > 0) {
                    found = true;
                }
                ;
            });
            return found;
        }
    }
})(jQuery);

第二种情况比第一种情况要慢得多。为什么主脚本中的函数使它更快?

0 个答案:

没有答案