如何使用 jQuery 删除输入复选框

How to remove input checkbox with jQuery

我有一个动态生成类别列表的插件。
我只想从 "Country" 和 jQuery 中删除输入类型复选框 select。我已经尝试使用 remove selector (on class .cat-item-15) 但无法使其工作。仅针对特定的 li 即 "Country"。这样它就删除了所有。

是否可以只应用于"Country" li

我这样试过:

$(".cat-item-15 :checkbox").remove();

这是我需要修改的代码:

<li class="cat-item cat-item-15">
  <label><input type="checkbox" name="ofait-items[]" value="15"> Country</label>
  <ul class="children">
    <li class="cat-item cat-item-53">
      <label><input type="checkbox" name="ofait-items[]" value="53"> Canada</label>
    </li>
    <li class="cat-item cat-item-47">
      <label><input type="checkbox" name="ofait-items[]" value="47"> United Kingdom</label>
    </li>
    <li class="cat-item cat-item-52">
      <label><input type="checkbox" name="ofait-items[]" value="52"> USA</label>
    </li>
  </ul>
</li>

你应该可以使用

$(".cat-item-15 :checkbox").first().remove();

$(".cat-item-15 :checkbox[value='15']").remove();

jsFiddle example

当您尝试 $(".cat-item-15 :checkbox").remove(); 时它失败了,因为它选择了所有具有 cat-item-15 的 class 元素的后代复选框,这显然太多了。

:checkbox[value='15'] 只选择 value 属性为 15 的复选框,而 .first() 只选择第一个复选框,所以给定你的代码应该工作。

$('.cat-item-15 :checkbox').css("display") == "none";

$('.cat-item-15 :checkbox').hide();

您应该使用以下代码:

$(".cat-item-15 input[type='checkbox']").remove();

之所以如此,是因为输入是 cat-item-15 的子项。

您可以考虑以几种方式定位元素。

根据元素的值定位元素

jQuery 支持 attribute-based selectors 这将允许您根据其中一个属性的值定位特定元素,因此在这种情况下,您可以使用 :

$('.cat-item-15 :checkbox[value="15"]').remove();

根据元素的位置定位元素

因为您知道这将是出现的第一个复选框,您可以使用 :first 选择器将其删除:

$('.cat-item-15 :checkbox:first').remove();

根据附近的内容定位元素

由于您要定位包含 "Country" 的元素,您可以使用 :contains() 选择器找到包含该元素的特定 <label> 并将其完全删除:

$('.cat-item-15 label:contains("Country")').remove();

您的方法无效,因为 HTML 的结构方式,所有其他项目都嵌套在初始 <li> 中。因此,如果您删除该父级 <li>,其中的所有项目也将被删除。

如果你只想删除输入复选框,你可以这样做:

$(".cat-item-15 :checkbox").first().remove();

如果您也需要"Country"这个词消失,那么:

$(".cat-item-15 label").first().remove();

我觉得应该可以。

试试这个:

$('.cat-item label:contains(Country) input').remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="cat-item cat-item-15"><label><input type="checkbox" name="ofait-items[]" value="15"> Country</label>
  <ul class="children">
    <li class="cat-item cat-item-53"><label><input type="checkbox" name="ofait-items[]" value="53"> Canada</label>
    </li>
    <li class="cat-item cat-item-47"><label><input type="checkbox" name="ofait-items[]" value="47"> United Kingdom</label>
    </li>
    <li class="cat-item cat-item-52"><label><input type="checkbox" name="ofait-items[]" value="52"> USA</label>
    </li>
  </ul>
</li>

您可以使用以下代码删除国家/地区

中的复选框
$(".cat-item-15").children("label").children("input").remove()

如果结构需要相同且值可能可变,您可以使用直接子选择器:

$(".cat-item-15 > label input:checkbox").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="cat-item cat-item-15">
  <label><input type="checkbox" name="ofait-items[]" value="15"> Country</label>
  <ul class="children">
    <li class="cat-item cat-item-53">
      <label><input type="checkbox" name="ofait-items[]" value="53"> Canada</label>
    </li>
    <li class="cat-item cat-item-47">
      <label><input type="checkbox" name="ofait-items[]" value="47"> United Kingdom</label>
    </li>
    <li class="cat-item cat-item-52">
      <label><input type="checkbox" name="ofait-items[]" value="52"> USA</label>
    </li>
  </ul>
</li>

如果 HTML 的结构可能不同但值保持不变,那么您可以使用:

$(".cat-item-15 :checkbox[value='15']").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="cat-item cat-item-15">
  <label>
    <input type="checkbox" name="ofait-items[]" value="15">Country</label>
  <ul class="children">
    <li class="cat-item cat-item-53">
      <label>
        <input type="checkbox" name="ofait-items[]" value="53">Canada</label>
    </li>
    <li class="cat-item cat-item-47">
      <label>
        <input type="checkbox" name="ofait-items[]" value="47">United Kingdom</label>
    </li>
    <li class="cat-item cat-item-52">
      <label>
        <input type="checkbox" name="ofait-items[]" value="52">USA</label>
    </li>
  </ul>
</li>

谢谢!