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();
});