2010-04-15 74 views
3

雖然我不懷疑這已得到解答,但我找不到與我的問題匹配的很好的匹配項。jQuery隱藏包含隱藏字段匹配值的所有錶行

我有一個表,我想根據它們是否包含一個隱藏的字段匹配值來過濾行。

據我所知,技術趨於「顯示所有行」,「過濾設置」,「顯示/隱藏過濾設置」

,我有以下的jQuery但我aweful帶有過濾器和我過濾集似乎總是不包含任何元素。

我的表是通常

<table> 
<tr><td>header></td><td>&nbsp;</tr> 
<tr> 
<td>a visible cell</td><td><input type='hidden' id='big-asp.net-id' value='what-im-filtering-on' /> 
</td> 
</tr> 
</table> 

我的目標是能夠匹配在TR上誰的後代包括含有真或假的隱藏輸入。

這是我試過選擇器(這種變化),我甚至沒有測試的價值。

function OnFilterChanged(e){ 
    //debugger; 
    var checkedVal = $("#filters input[type='radio']:checked").val(); 
    var allRows = $("#match-grid-container .tabular-data tr"); 
    if(checkedVal=="all"){   
     allRows.show(); 
    } 
    else if(checkedVal=="matched"){ 
     allRows.show(); 
     allRows.filter(function(){$(this).find("input[type='hidden'][id~='IsAutoMatchHiddenField']")}).hide(); 

    } 
    else if(checkedVal=="unmatched"){ 

    } 
} 

我的方式與過濾器?是過濾器中需要的$(this),以便我可以做後代搜索?

感謝好心

大廈在那些偉大的建議,下面我發現下面做的伎倆。我錯過了過濾器關閉函數必須根據過濾條件返回真/假的事實。另外,使端部 - 與選擇器是非常適合asp.net生成基於作INamingContainer

allRows.show(); 
allRows.filter(function(){ 
      return $(this).find(
       "input[type='hidden'][id$='IsAutoMatchHiddenField']").val() == "False"; 
     }).hide(); 

回答

3
$('#mySelector :hidden').filter(
    function (index) 
    { 
     return $(this).find('.repeatedObject').val() == 'someValue'; 
    } 
).hide(); 

filter()函數需要一個布爾值返回到實際確定是否要在留下元素ID名單。檢查API(http://api.jquery.com/filter/)以獲取更多信息。

另外,作爲旁註的val()html()text(),和其它相關函數返回從所述組中的第一元件的信息。如果你想循環,你必須使用eachfor循環。

+0

很好,非常感謝你對這個重要的信息。我覺得不好。 此外,對於做asp.net的人,如果你想做ID結束請參考這裏:http://stackoverflow.com/questions/609382/jquery-selector-id-ends-with – 2010-04-15 21:09:51

+0

不客氣!不要擔心感覺不好,每週在工作中發生在我身上。錯誤的路徑,忘記輸入'return'...謝天謝地,我的同事們不會因爲這些錯誤而取笑我。 =) – 2010-04-15 23:28:24

1

我認爲你需要從filter函數返回一個布爾值或等價物。如何:

allrows.filter(function() { 
    return $(this).find(':hidden').length; 
}).hide(); 

或者:

$('tr :hidden').closest('tr').hide(); 
+0

我相信我剛剛發現我錯過了那個關鍵點。謝謝你..過濾器行爲像在C#中的謂語 – 2010-04-15 21:08:54

2

夫婦的建議。

  1. find函數需要返回一個布爾值。
  2. 你正在尋找一個ID?或尋找價值?[id~='IsAutoMatchHiddenField']
  3. [attribute~=value],將尋找一個字由空白,例如分離值:[value~='foo']將不匹配value="foo-bar"但將匹配value="foo bar"

// Chain your functions, the beauty of jQuery. 
allRows.show() 
    .filter(function(index){ 
     // function needs to return a boolean. 
     return $(this) 
     .find("input[type='hidden'][id~='IsAutoMatchHiddenField']") 
     .val() == 'valuetocheck'; 
    });