我得到了两个场景。第一个:
<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);
第二种情况比第一种情况要慢得多。为什么主脚本中的函数使它更快?