在jQuery中选择带有选择器的元素

use*_*906 1 checkbox jquery list jquery-selectors

我想用jQuery选择一个元素.

<ul>
    <li><label><input type="checkbox" class="checkbox">checkbox1</label></li>
         <ul class="list">
          <li>lorem</li>
          <li>lorem</li>
          <li>lorem</li>
        </ul>
    <li><label><input type="checkbox" class="checkbox">checkbox2</label></li>
         <ul class="list">
          <li>lorem</li>
          <li>lorem</li>
          <li><lorem/li>
        </ul>
 </ul>
Run Code Online (Sandbox Code Playgroud)

我想隐藏并显示直接在带有1 jQuery函数的复选框下面的列表.

 $(".list").hide();

$(".checkbox").click(function() {

    if ($(".checkbox").is(":checked"))
    {
        $("????").show('slow');
    }
    else
    { 
        $("????").hide('slow');
    }
});
Run Code Online (Sandbox Code Playgroud)

???? 需要是一个选择器(仅)选择复选框下的列表.

Ror*_*san 6

首先,您的HTML无效,因为您不能li在a 之间添加元素ul.将您的HTML更改为:

<ul>
    <li>
        <label><input type="checkbox" class="checkbox">checkbox1</label>
        <ul class="list">
            <li>lorem</li>
            <li>lorem</li>
            <li>lorem</li>
        </ul>
    </li>
    <li>
        <label><input type="checkbox" class="checkbox">checkbox2</label>
        <ul class="list">
            <li>lorem</li>
            <li>lorem</li>
            <li><lorem</li>
        </ul>
    </li>
 </ul>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用cloest parent li作为上下文来查找相关的ul:

$(".list").hide();

$(".checkbox").click(function() {
    var $parentLi = $(this).closest("li");
    if ($(this).is(":checked")) {
        $("ul", $parentLi).show('slow');
    }
    else { 
        $("ul", $parentLi).hide('slow');
    }
});
Run Code Online (Sandbox Code Playgroud)