在jQuery中定位父容器并忽略子输入上的单击事件复选框

时间:2014-12-05 14:12:21

标签: javascript jquery jquery-mobile checkbox

我在jQuery Mobile应用程序中有以下jQuery,我在单击li时选择子复选框。这样可以正常工作,但是当它单击直接框时无法取消选中复选框时,它会破坏复选框本身的默认功能。

如何使用代码定位li复选框?

var page = $.mobile.activePage
page.on('vclick', '.item_boxes_wrapper li:not(.item_checkbox)', function(e) {
   var checkbox = $(this).find(':input');
   checkbox.prop('checked', checkbox.is(':checked') ? null: 'checked');
});
<ul class="item_boxes_wrapper">
   <li class="item_container selected_item">
      <img src="http://www.wrestlemaniamainevent.com/Image/984043-64-1.jpg" class="product_image">
      <input type="checkbox" checked="checked" value="98404364099" class="item_checkbox" name="items[]">
   </li>
</ul>

1 个答案:

答案 0 :(得分:3)

您可以使用:

page.on('vclick', '.item_boxes_wrapper li:not(.item_checkbox)', function(e) {
   if($(e.target).is(':checkbox')) return; // add this check here
   var checkbox = $(this).find(':checkbox'); // or .find('input[type=checkbox]')       
   checkbox.prop('checked', !checkbox.is(':checked'));
});

PS:似乎不是相关的选择器.item_boxes_wrapper li:not(.item_checkbox),我猜你想要'.item_boxes_wrapper li'。或者也许是.item_boxes_wrapper li:not(:has(.item_checkbox)) ???