当我单击 LI 时,我尝试选择一个单选框。但我收到错误“递归太多”。
$("li.user_line").click(function(event) {
if ($(event.target).is('li.user_line')) {
$(this).children("input[type=radio]").click();
alert($("input[name=user_chk]").val());
}
});
最佳答案
您收到错误是因为 input[type=radio]
是被单击元素的子元素。单击该按钮会将 DOM 向上冒泡到 li
,然后单击单选按钮,然后单击 li
,然后单击单选按钮...
要解决此问题,您只需将 radio 的 checked
属性设置为 true
即可。无需引发点击事件。
$("li.user_line").click(function(event) {
$(this).children("input[type=radio]").prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="user_line">
<input type="radio" />
Click anywhere here to select the radio
</li>
</ul>
请注意,我删除了多余的 is()
方法调用。由于您使用的 jQuery 选择器,结果将始终为 true
。另请注意,您在此处创建的效果可以使用 label
元素单独在 HTML 中实现。
关于javascript - jquery "event.target"太多递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43588509/