如果你想在jQuery中为一个元素附加一个函数,你基本上可以用三种方式做。每个人的优缺点是什么?
1)
var a = $('a')
a.fn.testFunc = function () {...};
$(a).testFunc();
这个错了,请忽略;见下面的#4
2)
$('a').bind('testFunc',function() {...});
$('a').trigger('testFunc');
3)
$('a').data('testFunc', function(){...});
$('a').data('testFunc')();
4)(添加以替换#1)
$.fn.testFunc = function () {...};
$(a).testFunc();
答案 0 :(得分:1)
#1根本没有工作,jQuery 实例上没有 fn
属性。 fn
(jQuery
)函数本身有一个$
属性,它指的是原型所有 jQuery实例继承。
#2更恰当地称为自定义事件。仅仅附加功能就太过分了。但是,如果您可能需要事件子系统的功能,那么它很有用。
#3很简单,是特定于元素的,并且利用了jQuery的数据缓存处理和处理。
#4将该函数添加到jQuery原型中,这意味着它将在所有 jQuery实例上可用,而不仅仅是那个,这可能是过度的。
为了完善你的选择,你也可以(称之为#5):
$("a")[0].testFunc = function(){ /*...*/};
$("a")[0].testFunc();
直接将该函数作为expando属性附加到元素。我不推荐使用data
; data
使用jQuery的expando,它可以最大限度地减少冲突的可能性。
在这五个选项中,#3似乎是最好的选择 如果 您确实需要将功能附加到DOM元素。