Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery单击最高的父输入';孩子_Javascript_Jquery - Fatal编程技术网

Javascript jquery单击最高的父输入';孩子

Javascript jquery单击最高的父输入';孩子,javascript,jquery,Javascript,Jquery,当我单击第二个复选框时,我正在尝试单击第一个输入复选框 <li> <div> <input type='checkbox' value='x'/> </div> <ul> <li> <ul> <li> <div> <input typ

当我单击第二个复选框时,我正在尝试单击第一个输入复选框

<li>
  <div>
     <input type='checkbox' value='x'/>
  </div>

  <ul>
     <li>
        <ul>
             <li>
                 <div>
                     <input type='checkbox' id='check' value='b'/>
                  </div>
              </li>

        </ul>

     </li>

  </ul>
</li>
我错过了什么

$('#check').click(function(){
  $('#parent').find('input').first().click();
});
如果您使用
父类
作为类

<li class='parent'>

由于id是唯一的,因此无需查找任何家长,您可以直接使用
id

$('#check').click(function(){
    $(this).closest('li[id]').find('input').first().click();
});

为第一个复选框指定自己的ID。然后您可以使用

$('#firstcheck').prop('checked',true);

我建议,鉴于
id
是动态生成的:

$('#check').click(function(){
    $(this).closest('div[id]').find('input').first().click();
});

如果,正如您在对其他答案的评论中所注意到的那样,
#check
id
也是动态的,我强烈建议在
输入
-元素中添加一个一致的类名,以便绑定
click()
事件处理程序。否则,您将不得不检查“深度”或祖先的数量,以决定应该单击哪个,以及应该触发单击事件处理程序。

这将在没有ID的情况下工作,但正如David Thomas提到的,使用ID更有效

$('#check').click(function(){
    $(this).parents('li').last().find('div:first input').click();
});

我就是这么想的:)优雅!抱歉,没有提到id已生成dynamically@ComeRun那么id
check
也一样吗dynamic@ComeRun在这种情况下,我们将使用最近的
li
,它有一个
id
属性,即使有一个
id
,为什么要使用
最近的()
?很抱歉,忘记提及已生成父iddynamically@DavidThomas因为许多人使用重复的id,因为它不会导致任何问题。无论如何,根本不使用id吗?所以基本上,我们需要id或类来处理第一个li,对吗?是的,是的。您可以改为使用特定的
,或其他
数据-*
属性,但必须有一致的方法来标识绑定和遍历的元素。
$('#check').click(function(){
    $(this).closest('div[id]').find('input').first().click();
});
$('#check').click(function(){
    $(this).parents('li').last().find('div:first input').click();
});