2013-03-01 3 views
0

J'ai tellement de liens dans ma page Web. Environ 25 liens avec un id = "reply_x". Environ 20 liens avec id = "quote_x" et quelques liens avec id = "like_x". J'ai écrit différentes fonctions en utilisant JQuery pour différents groupes de liens. Une fonction sera exécutée lorsque quelqu'un cliquera sur un lien ayant l'identifiant reply_x et l'autre sur n'importe quel lien cliqué avec l'identifiant quote_x. Maintenant, je veux rendre ma page Web efficace. Alors, quel est le moyen le plus efficace pour exécuter ces fonctions.Quelle est la manière la plus efficace d'exécuter une fonction sur un lien Cliquez sur

J'ai utilisé la méthode suivante.

$(document).ready(function(){ 
    $('#reply_x').click(function() { 
    // function statements 
    }); 
}); 

Est-ce un moyen efficace? Si non, quel est le moyen le plus efficace pour exécuter la fonction.

+0

qu'entendez-vous par efficace ici ... ?? vous avez évidemment besoin de lier ces événements click lorsque dom est prêt. –

+0

[La délégation d'événements] (http://api.jquery.com/on/) est plus efficace et plus simple. Ajoutez une classe commune à tous ces liens de réponse, puis utilisez '$ (document.body) .on ('click', 'a.reply', function() {})'. – DCoder

+0

en utilisant un id comme un sélecteur, il sélectionnera seulement le premier élément correspondant au sélecteur donné. Pour que cette fonction de clic se déclenche pour tous les liens de reply_x et quote_x, ajoutez ces valeurs en tant que classes. – iAmClownShoe

Répondre

1

Tout d'abord, ID doit être unique donc il ne devrait être que un élémentreply_x ID attribut, mais je suppose que _x est en fait un certain nombre. Ce serait faire preuve de fermeté sur vos doigts d'avoir à saisir toutes ces liaisons, donc vous devriez probablement donner à tous une classe à la place: reply:

$(".reply").on('click', function() {}) 

Cela lie l'événement à tous les éléments, donc il ne peut être le plus efficace. S'ils sont tous emballés dans le même conteneur, vous pouvez utiliser:

$("#container").on('click', '.reply', function() {}) 

... qui semble être plus efficace aussi longtemps que #container est proche des .reply éléments basés sur this answer

+0

Supposons que j'ai la classe .replay. Alors Où dois-je lancer tihs $ ("# container"). On ('click', '.reply', fonction() {}). Je veux dire document.ready ou window.onload ou ailleurs? –

Questions connexes