jQuery 在选中复选框时显示/隐藏图像

发布于 2024-10-23 23:06:00 字数 1038 浏览 3 评论 0原文

我有一个像这样的表,每行都有一个复选框,每列都有一个复选框。因此,当我选中行和表标题中的复选框时,我想在每个 td 中的数据旁边显示/隐藏刻度线图像。当我取消选中时,刻度线应该隐藏。

演示: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>

I have a table like this, and i have a checkbox at each row and checkboxes on each column. So i want to show/hide an tick mark image next to data in each td when i check the checkbox in the row and table headers. And the tick mark should hide when i uncheck.

Demo of this: 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

窝囊感情。 2024-10-30 23:06:00

你会使用这样的东西:

//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(); }
});

You would use something like this:

//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();
    }
});

EDIT:

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(); }
});
○愚か者の日 2024-10-30 23:06:00

JSFiddle 演示(编辑以匹配注释)

我通过添加类来更改复选框更改上的文本颜色。
对于每个我在删除类之前检查是否两个相应的复选框(行和列)都未被选中。

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');
            }
        });
    }
});

JSFiddle Demo (edited to match comments)

I change the color of the text on checkbox change by adding a class.
For each i check if both corresponding checkboxes (line and column) are unchecked before removing the class.

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');
            }
        });
    }
});
我三岁 2024-10-30 23:06:00

这是我能给你的最好答案。请检查...

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

希望这有帮助:)

This is the best answer that I could give you. Please check...

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

Hope this helps :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文