编写jquery函数的重点是:
(function( $ ) {
$.fn.simple_hide_function = function() {
var $t = this;
$t.hide();
};
})( jQuery );
$(window).load(function () {
$('#myId').simple_hide_function();
});
为什么不这样做:
function simple_hide_function(id){
id.hide();
};
$(window).load(function () {
var my_id = $('#my_id');
simple_hide_function(my_id);
});
添加了问题:
这样做有什么问题吗?
function simple_hide_function(id){
id.hide();
};
$(window).load(function () {
var my_id1 = $('#my_id1'),
my_id2 = $('#my_id2'),
my_id3 = $('#my_id3');
simple_hide_function(my_id1);
simple_hide_function(my_id2);
simple_hide_function(my_id3);
});
答案 0 :(得分:4)
在插件版本中,您正在创建一个新函数并将其附加到jQuery对象。通过使您的函数成为对象的成员,您可以利用jQuery的链接等优势,其中在一行中的同一对象上调用多个函数。
在第二个版本中,您将在全局范围内创建一个函数并向其传递一个jQuery对象。这污染了全局命名空间(现在你的函数随处可见),它实际上并不符合jQuery理念。
但是,正如您所发现的,没有功能差异。两者都会执行得很好。
答案 1 :(得分:0)
我认为主要的想法是你不会混淆全局命名空间。在第二个示例中,simple_hide_function
属于窗口,可能会导致名称冲突,但在第一个示例中,它是一个局部变量。