2011-10-06 93 views
3

我無法得到這個工作。如果建議的td包含「OH」,我只想顯示測試目的的警報。jQuery如果元素包含某些東西,做些什麼

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

不管它是什麼(即美國,MI 48187)警報仍然彈出,我缺少什麼?

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

回答

9

因爲即使找不到元素也會返回true。試試這個:

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

哇,我一直盯着我的代碼很長,可以發誓我增加了長度,謝謝你是第二套眼睛! – ToddN

+0

那麼它不會真的返回undefined它只是返回一個空數組,它的計算結果爲true,你的解決方案確實解決了這個問題, –

0

你必須在這裏小心。如果這個表格在HTML中很大,這可能會導致瀏覽器崩潰(請參閱:IE8-)。如果您正在生成的HTML,它會是更快的格式化這樣的尋址單元:

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

然後,你可以很容易地選擇它:

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