2011-06-30 4 views
4

Mon but est de supprimer l'action de case à cocher vérifier en cliquant sur son étiquette Voici mon code ..preventDefault() ne fonctionne pas

$('TABLE TBODY TR TD').each(function() 
    { 
    $(this).find('input').each(function() 
          { 
           $('label for='+$(this)+'').preventDefault(); 
          }); 
    }); 

est Ci-dessous le code HTML associé ..

<table> 
     <tr><input type="checkbox" id="a1"><div><label for="a1">ClickMe</lable></div></tr> 
    </table> 

S'il vous plaît, aidez-moi.

Répondre

4

preventDefault n'est pas une méthode sur l'objet jQuery lui-même. C'est une méthode sur l'événement qui est passée à un gestionnaire d'événement donné. En outre, la syntaxe de votre sélecteur d'étiquette est incorrecte (vous avez oublié les parenthèses et vous avez tenté de concaténer un objet jQuery avec une chaîne) et vous avez imbriqué inutilement deux each es.

Mieux:

$("table tbody tr td input").each(function() { 
    $("label[for='" + this.id + "']").click(function (event) { 
     event.preventDefault(); 
    }); 
}); 

Exemple jsFiddle: http://jsfiddle.net/s9D4n/

Peut-être encore plus simple, mais certes pas fonctionnellement équivalent:

$("label").click(function (event) { 
    event.preventDefault(); 
}); 
+0

Hmmm désolé .. malheureusement votre code ne fonctionne pas :-( – Reddy

+0

« ne fonctionne pas » !! La meilleure description de ce qui a mal tourné ... jamais. Pouvez-vous décrire ce qui ne fonctionne pas, et produire peut-être un jsFiddle parce que le JSFiddle que j'ai lié à dans mon post montre que cela fonctionne (j'ai dû corriger votre HTML invalide bien que ...) – Domenic

+0

Voici le lien jsfiddle, vous pouvez jouer avec lui. jsfiddle.net/vBKWd/1/ – Reddy

1

Vous avez juste besoin d'enlever for attribut de l'étiquette.

<label>ClickMe</label> 
Questions connexes