当使用jQuery检测行上的点击时,无法单击表行中的复选框

时间:2018-03-09 16:31:06

标签: jquery

这里发生了一件奇怪的事情,我有一个数据表,可以通过点击行中的任何单元格来选择行,最后一个单元格附加了一些其他函数,因此它可以选择行(选中复选框)但不要取消选中它:

这是标记:

<tr class="82510246 inventory-row">

<td>
     <input type="checkbox" value="82510246" name="tags[]" id="tag82510246" class="checkbox inventory-checkbox">
</td>

<td>40003</td>
... a whole bunch of cells ...
<td>430</td>

<td class="inventory-price">
     <a class="tag-price">0.7289</a>
</td>

</tr>

和THE JQUERY:

$('.inventory-row').on('click', 'td', function(event) {
    var css = $(this).attr('class');
    var box = $(this).closest('tr').find(':checkbox').is(':checked');
    if(css !== 'inventory-price'){
        $(this).closest('tr').find(':checkbox').trigger('click');
    }  
    if(css == 'inventory-price' && !box){
        $(this).closest('tr').find(':checkbox').trigger('click');
    }   
});

我无法直接点击单元格/复选框 - 如果我点击该单元格,则没有任何反应(框不会选择/取消选择)
为什么没有发生?

1 个答案:

答案 0 :(得分:1)

您尝试在每个td上添加事件点击,这样您的代码就会出现冲突,因为您的复选框也在td内。添加类似&#34; td-text&#34;在你的td你想要点击,除了这个与checbox。

&#13;
&#13;
$('.inventory-row').on('click', '.td-text', function(event) {
    var css = $(this).attr('class');
    var box = $(this).closest('tr').find(':checkbox').is(':checked');
    if(css !== 'inventory-price'){
        $(this).closest('tr').find(':checkbox').trigger('click');
    }  
    if(css == 'inventory-price' && !box){
        $(this).closest('tr').find(':checkbox').trigger('click');
    }   
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table>
  <tr class="82510246 inventory-row">

<td>
     <input type="checkbox" value="82510246" name="tags[]" id="tag82510246" class="checkbox inventory-checkbox">
</td>

<td class="td-text">40003</td>
... a whole bunch of cells ...
<td class="td-text">430</td>

<td class="inventory-price">
     <a class="tag-price">0.7289</a>
</td>

</tr>
</table>
&#13;
&#13;
&#13;