2011-10-06 3 views
3

Je n'arrive pas à faire marcher ça. Je veux simplement afficher une alerte à des fins de test si le td proposé contient "OH".jQuery si l'élément contient quelque chose, faites des choses

<table id="v65-cart-shipping-details"> 
    <tr>..</tr> 
    <tr>..</tr> 
    <tr> 
     <td>United States, OH 43112</td> 
    <tr> 
    </table> 

Peu importe ce qui est en elle (par exemple. États-Unis, MI 48187) l'alerte apparaît toujours en place, qu'est-ce que je manque?

$(document).ready(function() { 
    if ($("#v65-cart-shipping-details tr:eq(2) td:contains('OH')")) { 
     alert("Did Stuff") } 
}); 

Répondre

9

Parce qu'il retournera vrai même si l'élément est introuvable. Essayez ceci:

$(document).ready(function() { 
    if ($("#v65-cart-shipping-details tr:eq(2) td:contains('OH')").length) { 
     alert("Did Stuff") } 
}); 
+0

wow, j'ai été Fixant mon code à long et pourrait de juré j'ai ajouté de la longueur, merci d'être ce deuxième ensemble d'yeux! – ToddN

+0

Eh bien, il ne renverra pas vraiment 'undefined' il retourne juste un tableau vide qui évalue à' true', votre solution résout ce problème bien que +1 –

0

Vous devrez faire attention ici. Si cette table est énorme dans le code HTML, cela pourrait provoquer le crash d'un navigateur (lire: IE8-). Si vous générez le code HTML, ce serait beaucoup plus rapide pour mettre en forme la cellule d'adresse comme ceci:

<tr class="address" data-state="OH" data-zip="43112" ... > 
    <td>United States, OH 43112</td> 
<tr> 

Ensuite, vous pouvez facilement sélectionner:

if($("#v65-cart-shipping-details tr.address").is('[data-state="OH"]')) 
    alert('mom'); 
Questions connexes