2014-03-12 112 views
0

我是Jquery的新手,即使在搜索doc和這裏(stackoverflow)後,找不到解決方法。Jquery在過濾後檢查元素

下面是我的下表,其中有3行,每行都有一個複選框(行中的第一個元素)。

現在有filtermatch="false" style="display: none;",的行將被隱藏。

我也有一個按鈕來檢查所有並取消全部選中。如果不應用隱藏,它會工作,但如果某個元素被隱藏,則勾選按鈕也會隱藏對象被選中/未選中。

我的問題是如何獲得第2排,而無需修改表中任何HTML代碼進行覈對(實際上,通過其他人的腳本自動生成的表,我只是寫我的腳本來控制顯示。)

HTML

<table id="RankTable" border="0" width="800"> 
<thead> 
<tr> 
    <th filter="false"><input type="button" id="selectall" value="all"></th> 
    <th filter="false">rank</th> 
    <th filter-type="ddl">degree</th> 
    <th filter-type="ddl">lastposition</th> 
    <th filter-type="ddl">workingyear</th> 
    <th>realname</th> 
    <th>email</th> 
    <th>mobile</th> 
</tr> 
</thead> 
<tbody> 
<tr id="answer-row" style=""> 
    <td><input type="checkbox" name="answers" value="140"> </td> 
    <td>2 </td> 
    <td>bachelor </td> 
    <td>項目經理 </td> 
    <td>9 </td> 
    <td> </td> 
    <td><a href="mailto:[email protected]?subject=Invitation for an interview">[email protected]</a></td> 
    <td>12316459749816 </td> 
</tr> 
<tr id="answer-row" style=""> 
    <td><input type="checkbox" name="answers" value="139"> </td> 
    <td>6 </td> 
    <td>bachelor </td> 
    <td>項目主管 </td> 
    <td>9 </td> 
    <td> </td> 
    <td><a href="mailto:[email protected]?subject=Invitation for an interview">[email protected]</a></td> 
    <td>12345646 </td> 
</tr> 
<tr id="answer-row" filtermatch="false" style="display: none;"> 
    <td><input type="checkbox" name="answers" value="141"> </td> 
    <td>7 </td> 
    <td>master </td> 
    <td>程序員 </td> 
    <td>1 </td> 
    <td> </td> 
    <td><a href="mailto:[email protected]?subject=Invitation for an interview">test09[email protected]</a></td> 
    <td>56456161 </td> 
</tr> 
</tbody> 
</table> 

js腳本:

$('#selectall').toggle(function() { 
     $("input[name='answers']").attr("checked", 'true'); 
     $("input[id='selectall']").attr("value", '{% trans "None" %}'); 
    }, function() { 
     $("input[name='answers']").removeAttr("checked"); 
     $("input[id='selectall']").attr("value", '{% trans "All" %}'); 
    }); 

提前感謝任何投入。

+0

謝謝大家,我只是自己的身影的解決方案。這裏是代碼: $('#selectall')。toggle(function(){ $('tr [style =「」]')。find(「input [name ='answers']」)。attr (「checked」,'true'); $(「input [id ='selectall']」)。attr(「value」,'{%trans'None'%}'); },function(){ (「input」[name ='answers']「)。removeAttr(」checked「); $(」input [id ='selectall']「)。 attr(「value」,'{%trans'全部「%}」); }); – user3409626

回答

0

對於那些可見的行<tr>使用通用類,並在其上添加事件。與此隱藏<tr>將不會有一個'檢查' - 複選框。

HTML

<td><input type="checkbox" name="answers" class="answers" value="139"/> </td> 

JS:

$(".answers").attr("checked", 'true'); 

此外,當show()display()是隱藏的行您可以將此同一類添加回該行 然後複選框可以檢查爲好。

我已經修改您的代碼位:here is demo

+0

謝謝。 jsfiddle是非常酷的工具。但我的問題是如何獲得前2行而不修改表代碼的任何代碼(實際上,表是由其他人的腳本自動生成的,我只能更改腳本部分。) – user3409626

+0

是隻有2兩行需要檢查? OR有沒有可能添加任何新行的機會? – 2014-03-12 09:40:32

+0

該表是動態生成的,具體取決於後端數據,可能有多行而不是隻有3行,如下所列。因爲差異僅在屬性(filtermatch =「false」style =「display:none;」)中,是否有可能檢查其行數不是的行? – user3409626