2012-12-18 40 views
1

的jQuery選擇對象我的HTML代碼示例:使用他們的孩子條件

<div class="category"> 
    <div class="product"> 
     <!-- some product info --> 
     <input type="text" value="0" /> <!-- it is quantity --> 
    </div> 
<!-- ... other products --> 
</div> 
<!-- ... other categories --> 

所以我需要使用jQuery,其中至少有一個產品具有正數的所有類別。

東西看起來像這樣(在C#)

var filteredCategories = categories.Where(c => c.Products.Any(p => p.Quantity !=0)); 

如何使用jQuery做呢?

回答

3
$('.product', '.category').filter(function() { 
    return parseint($(this).children('input[type="text"]').val(),10) !== 0; 
}).dosomething(); 

你應該考慮增加一個類的量輸入到對其進行定位,作爲.product元件內的任何其他的文本輸入將也用這種方法來選擇。

+0

這應該讀取'> 0',而不是'!== 0'。 – Tomalak

+0

@Tomalak - 第一個意思是「零以上」,另一個是「非零」,他們都應該工作,但我用後者,因爲我不確定這是用於什麼。某些電子商務系統在從購物車中取出物品時會允許數量爲負數,並且由於問題具體爲「非零」,因此我使用了該方法,但現在我發現它在問題中表示「正值」,所以兩者都可以正常工作,並且由於零等於「錯誤」,所以您根本不必使用操作員。 – adeneo

+0

+1爲好。 – Adil

5

你可以使用jQuery的.filter()方法

var filtered = $(".product").filter(function(){return this.find('input').val()>0}); 

或者乾脆

var filtered = $('.product:has(input[value!=0])'); 

jQuery的文檔:has Selector

+1

你的第二個解決方案絕對是最優雅的,我喜歡它。這裏有一個鏈接:有選擇器的語法:http://api.jquery.com/has-selector/ –

2

您可以使用下面的

$('.product').​​​​​​​has(':text[value!=0]') 

這會給你有一個文本框用值<> 0

所有.products看看here

0

試試這個::

$("div.product input[value!=0]:text").parents(".category") 

DEMO

1
$('.product input[value!="0"]').closest('.product'); 

也許像t的東西他?

相關問題