2012-10-04 3 views
0

J'ai un problème simple avec l'événement jQuery click, que je ne suis pas en mesure de résoudre.L'événement jQuery click ne répond pas

Voici le code:

$('document').ready(function() { 
    var links = $('.brandLinks li a'); 
    console.log(links.length); // there are total 24 items are there 

    for(var i = 0; i < links.length; i++) { 
     links[i].click(function(e){ 
      console.log('click.'); 
     }); 
    } 
}); 
+1

Pourquoi avez-vous avoir des balises '
' dans le code javascript? – Johan

+0

ok. juste pour le saut de ligne. si je vais enlever alors aussi je reçois le même problème. –

Répondre

6

Vous n'avez pas besoin de boucle. La majorité des méthodes jQuery fonctionnent sur chaque élément dans l'ensemble correspondant. En outre, document ne doit pas être cité. Vous voulez sélectionner l'objet réel document. S'il est cité, jQuery sera à la recherche d'un élément avec le nom de la balise « document »:

$(document).ready(function() { 
    $('.brandLinks li a').click(function() { 
     console.log('click'); 
    }); 
}); 

Side note: Il n'a pas fait que la chaîne « document » ne correspond pas à quoi que ce soit dans ce cas. La méthode ready fonctionnera sur n'importe quel objet jQuery, indépendamment de ce qu'il contient (même s'il est vide). Il serait beaucoup plus logique pour les autres de lire votre code (et vous-même dans le futur) pour sélectionner l'objet document. Pour ces raisons, j'utilise généralement la forme alternative:

$(function() { 
    // This is the same as $(document).ready(function() {}); 
}); 
+0

oui ça marche. Merci –

0

Vous n'avez pas besoin d'un événement de boucle à lier. vous pouvez lier des éléments entiers à la fois. link[index] est un élément JavaScript natif. Vous auriez dû utiliser $(link[k]).click.

$(document).ready(function() { 
    var links = $('.brandLinks li a'); 
     console.log(links.length); // there are total 24 items are there 
    links.click(function(){ 
      console.log('click.'); 
    });   
}); 
0

Essayez cette

$(document).ready(function() { 
var links = $('.brandLinks li a'); 
console.log(links.length); // there are total 24 items are there 

for(var i = 0; i < links.length; i++) { 
    links[i].click(function(e){ 
     console.log('click.'); 
    }); 
} 
}); 
0

Le problème avec votre code est que vous ne preniez pas soin de fermeture, vérifier this

devrait fonctionner:

var link = links[i]; 
$(link).click((function(value) { 
        return function() { 
         // 
        }; 
       })(link));