2010-04-29 7 views

Répondre

4
new_element.attr('onclick','func();'); 

est:

  • inefficace (créer inutilement une nouvelle fonction en ligne à partir d'une chaîne, qui ne fait rien, sauf func d'appel et de perdre la référence this);

  • aggravation de mettre du code complexe, car tout doit être JS chaîne échappée;

  • cassé dans IE, en raison de bugs dans setAttribute.

Éviter. click()/bind('click') est là pour une raison.

+0

Et il est sujet aux fautes de frappe ('onclikc') –

3

onclick a un certain nombre de limitations, y compris encombrent les DOM et en permettant qu'une seule fonction à la fois. Donc, vous devriez utiliser le clic. Voir Quirks Mode pour plus d'informations.

0

Puisque vous utilisez jQuery permettent alors de cette façon

new_element.click(function(){ 
    // your code 
}); 

ou vous pouvez lier le gestionnaire d'événement click comme

new_element.bind("click", function(){ 
    // your code 
}); 
+0

Merci, mais la fonction existe déjà et est appelée à partir de quelques endroits. Une fonction anonyme ne serait pas appropriée pour moi. – Jake

0

Toute différence de performance entre les deux va plus susceptibles d'être négligeable. Vous devriez utiliser celui qui lit le mieux, et c'est element.click. (De plus, onclick présente de nombreux inconvénients, comme @Matthew Flaschen mentionné.)

1

directement référence à la fonction sera plus efficace que d'avoir à interpréter une chaîne.

Le plus bas moyen tactile de faire cela, cependant, est de cette façon:

$(links_selector).live('click', func); 

links_selector sera probablement quelque chose comme ul.listClass a.actionClass. Cela ne nécessitera rien lors de l'ajout de nouveaux éléments de liste.