第一个代码具有重复使用的优点,但具有定义匿名函数仅用于调用实际函数的缺点。如果真的很重要,那么额外的功能是一个开销。
由于您只传递一个函数,第二个将占用更少的内存。函数也通过引用传递。这个函数的含义可以被存储一次,并被许多不同的调用者调用。
但是,您附加它的方式也会影响性能。如果你不喜欢这样写道:
$('#id1').on('click',function(e){myFunction(var1,var2);});
$('#id2').on('click',function(e){myFunction(var1,var2);});
这个人叫jQuery的4倍(2 $()
和2 on()
),造成2个匿名函数和两次调用外部函数。计数:6个调用,3个函数只是为了执行您的操作(不包括内部jQuery调用)。
$('#id1').on('click',function(e){blah blah blah});
$('#id2').on('click',function(e){blah blah blah});
,如果你做这种方式,功能不能重用了,但你有4调用了jQuery,2个功能,但你是重复的代码。从干燥的角度来看,这并不好。
$('#id1, #id2').on('click',function(e){blah blah blah});
这一个,你有2个电话,1个功能。这一个更好。
$('#id1, #id2').on('click',function(e){myFunction(var1,var2);});
你也可以这样做,该函数可以重复使用,牺牲一个额外的匿名函数和调用。计数:3个电话,2个功能。
你可以通过附加的处理程序,以“最接近公共父”驾驭.on
力量,最近,这样的泡沫不会前往了很远。相比之下,live()
将事件附加到document
,从而使处理程序可用于新元素。但是附加到document
对于深度嵌套元素来说非常有用。
$('nearest_common_parent').on('click','dynamic_element',function(){
//do stuff
});
你如何“附加到许多”? – Joseph
@Joseph - 是:) – Nick
darn拼写错误,我的意思是“如何” – Joseph