2010-03-29 3 views
1

J'ai une situation dans laquelle j'ai besoin de lier plusieurs fois un événement de clic à un objet.Performances jquery des événements de plusieurs clics de liaison

Par exemple:

for(i=0;i<=100;i++){ 
    $myObject.click(function(){ 
     window.location = "myurl"+i+".html"; 
    }) 
    ...do other stuff... 
} 

Via que le balisage, ne se termine myObject $ avec 100 événements de clic attachés à elle? Dois-je désengager l'événement click d'abord à chaque fois?

for(i=0;i<=100;i++){ 
    $myObject.unbind('click').click(function(){ 
     window.location = "myurl"+i+".html"; 
    }) 
    ...do other stuff... 
} 
+0

Je suis curieux de savoir ce que le h3ll vous construisez là-bas ... – hunter

+0

Beaucoup de fenêtres ouvertes, apparemment. :-) – ajm

+0

C'est un rotateur de contenu. Il n'y aura pas 100 éléments, mais peut-être 10 qui tourneront infiniment. Chaque fois qu'il boucle, j'ai besoin de mettre à jour l'événement click pour un objet. –

Répondre

1

Vous lierait 100 événements de clic dans le premier appel, et définissez l'emplacement de la fenêtre de myurl0.html - myurl100.html sur un seul clic. (EDIT: je n'ai pas testé ceci, cependant, il pourrait être en train de créer une fermeture et n'ouvrirait donc que myurl100.html.)

La seconde n'ouvrirait que myurl100.html.

En général, il est préférable de désactiver les événements qui ne sont plus nécessaires.

Cherchez-vous quelque chose comme one, qui tire une fois et est non liée?

+0

"En général, il est préférable de désactiver les événements qui ne sont plus nécessaires." <- c'est à peu près ce que je demandais. Merci d'avoir répondu! Je suppose que l'application d'un événement de clic au même objet encore et encore sans déconnexion était une mauvaise idée. –

0

Selon this article, méthode live() sera plus rapide que bind()

Questions connexes