2016-03-02 93 views
1

下面的語句產生錯誤:錯誤使用jQuery包含()

TypeError: $(...).children(...).contains is not a function

$('.woocommerce-checkout .shop_table tr.cart_item dl.variation').each(function() { 
    if ($(this).children('.variation-Billing').contains("Once Off")) { 
     $(this).children('.variation-Billing').contains("Once Off").show().siblings('.variation-Billing').show(); 
    } 
}); 

我做了什麼錯?

+0

讓我們看看您的HTML代碼。 –

+0

顯示您的完整代碼或製作小提琴鏈接。 – Sumanta736

+0

也許你被[$ .contains()](https://api.jquery.com/jQuery.contains/)與[:contains selector](https://api.jquery.com)無關/包含選擇器/)。但錯誤是正確的,jQuery沒有方法'$ .fn.contains()',因爲你正在嘗試使用它 –

回答

4

錯誤是正確的; 'contains'不是一種方法 - 它是一個選擇器,使用:contains()

另請注意,if語句應檢查jQuery對象的length屬性以查看是否找到任何元素。試試這個:

$('.woocommerce-checkout .shop_table tr.cart_item dl.variation').each(function() { 
    var $oneOffBillings = $(this).children('.variation-Billing:contains("Once Off")'); 
    if ($oneOffBillings.length) { 
     $oneOffBillings.show().siblings('.variation-Billing').show(); 
    } 
}); 
+0

好的,謝謝@Rory McCrossan!其實我想顯示的元素不包含「一次關閉」 – drake035

+1

在這種情況下結合':not'選擇器,像這樣:':not(:contains(「Once Off」))' –

+0

謝謝,像這樣? $(this).children('。variation-Billing:not(:contains(「Once Off」))''。show()。siblings('。variation-Billing')。show();似乎沒有工作 - 我沒有得到任何錯誤,雖然 – drake035