2016-03-02 99 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