2011-03-16 68 views
4

我有一個這樣的表格,我在每一列的每一行和複選框上都有一個複選框。所以我想要顯示/隱藏每個td中數據旁邊的刻度標記圖像,當我檢查行和表格標題中的複選框時。當我取消勾選時,勾號標記應該隱藏。jQuery在檢查複選框上顯示/隱藏圖像

演示的這個:http://jsfiddle.net/MpzXU/3/

<table id="example"> 
     <thead> 
     <tr> 
      <th></h> 
      <th>PO Number</th> 
      <th>Hangtag<input type="checkbox" value="hangtag" class="ht_chkbx"/></th> 
      <th>Care Label<input type="checkbox" value="Care Label" class="cl_chkbx"/></th> 
      <th>UPC<input type="checkbox" value="UPC" class="upc_chkbx"/></th> 
     </tr> 
     </thead> 
     <tbody> 
     <tr> 
      <td><input type="checkbox" name="checkbox2" id="checkbox2"></td> 
      <td>6711112</td> 
      <td>1</td> 
      <td>20</td> 
      <td>17</td> 
     </tr> 
     </tbody> 
    </table> 
+0

嗨Nahom,你問題似乎如此混亂。請修改它,以便我們可以幫助您。 – 2011-03-16 09:19:45

+0

@Ian我已經更新了這個問題,並把演示也... – Ravi 2011-03-16 09:27:33

回答

1

JSFiddle Demo(編輯匹配評論)

我通過添加一個類來改變複選框更改文本的顏色。 對於每一個我檢查,如果兩個相應的複選框(行和列)未選中刪除類之前。

HTML

<table id="example"> 
<thead> 
    <tr> 
     <th></th> 
     <th>A <input type="checkbox" /></th> 
     <th>B <input type="checkbox" /></th> 
     <th>C <input type="checkbox" /></th> 
     <th>D <input type="checkbox" /></th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td>1 <input type="checkbox"></td> 
     <td>A1</td> 
     <td>A2</td> 
     <td>A3</td> 
     <td>A4</td> 
    </tr> 
    <tr> 
     <td>2 <input type="checkbox"></td> 
     <td>B1</td> 
     <td>B2</td> 
     <td>B3</td> 
     <td>B4</td> 
    </tr> 
    <tr> 
     <td>3 <input type="checkbox"></td> 
     <td>C1</td> 
     <td>C2</td> 
     <td>C3</td> 
     <td>C4</td> 
    </tr> 
</tbody> 

jQuery的

var headers = $('#example th'); 
$(':checkbox', '#example').change(function(e){ 
    var isChecked = $(this).is(':checked'); 
    if($(this).closest('thead').length){ //columns checkboxes 
     //getting the column index 
     var i = headers.index($(this).parent()); 

     $('tbody tr', '#example').each(function(){ 
      var isLineChecked = $(':checkbox:checked', this).length; 

      if(isChecked && isLineChecked ){ 
       $(this).find('td:eq('+i+')').addClass('selected'); 
      } else { 
       $(this).find('td:eq('+i+')').removeClass('selected'); 
      } 
     }); 

    } else { //line checkbox 
     var columnsCheckboxes = $(':checkbox', headers); 

     $(this).parent().siblings().each(function(i, td){ 
      if(isChecked && columnsCheckboxes.eq(i).is(':checked')){ 
       $(this).addClass('selected'); 
      } else { 
       $(this).removeClass('selected'); 
      } 
     }); 
    } 
}); 
+0

轉基因非常感謝,但我需要的是當我選擇1和A,改變應該只發生在A1。當我選擇時,保持1選擇,1和B = A2,1和C = A3,1和D = A4的變化應該不會發生整列... – Ravi 2011-03-16 10:43:59

+1

[鏈接](http://jsfiddle.net/gmoulin/ qldan/3 /)修改JSFiddle來完成你所需要的。 – GMO 2011-03-16 13:29:55

+0

真的,我應該感謝這整個線索給我很多投入,腳本,分享他們的知識。事實上,這是我第一個開發企業應用程序的jquery項目。再次KUDOS Stackoverflow和整個這個網站的開發人員.... :) – Ravi 2011-03-16 14:43:31

2

你會使用這樣的:

//Monitor the main checkbox ($("#macDaddyCheckbox")) for changes 
$("#macDaddyCheckbox").change(function(){ 
    if($(this).is(":checked")){ 
     //It is checked, so hide the other checkboxes 
     $(".babyCheckboxes").hide(); 
    } else { 
     //It is not chceked, so show the other checkboxes 
     $(".babyCheckboxes").show(); 
    } 
}); 

編輯:

var myImg = $("#myImg"); 

$("#checkBoxAtTheRow").change(function(){ 
    if($(this).is(":checked")){ myImg.hide(); } else { myImg.show(); } 
}); 

$(".tableHeaderCheckBoxes").change(function(){ 
    if($(this).is(":checked")){ $(".babyCheckboxes").hide(); } else { $(".babyCheckboxes").show(); } 
}); 
+0

我想顯示/隱藏圖像時檢查/取消選中chekbox在行,然後選擇表標題複選框不顯示/隱藏babycheckboxes .. – Ravi 2011-03-16 09:10:56

+0

Err ...確定...看到編輯? – mattsven 2011-03-16 09:17:49

+0

沒有運氣的人...看到演示http://jsfiddle.net/VT4UQ/1/ – Ravi 2011-03-16 09:47:05

0

這是我可以給你最好的答案。請檢查...

http://jsfiddle.net/MpzXU/9/

希望這有助於:)

+2

謝謝Ian,我有基本的理解。改變腳本實現什麼尋找... – Ravi 2011-03-16 11:52:57

+0

您的歡迎:)請投票,如果它有幫助或請不要忘記標記它與檢查,如果你發現它是正確的答案:) – 2011-03-16 12:04:49