javascript - jquery "event.target"太多递归

标签 javascript jquery jquery-ui recursion

当我单击 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/

相关文章:

javascript - 消除 SVG 圆形元素上的别名

javascript - 为什么 document.off 禁用点击以 document.on 开始的按钮而不是 id.click 在 Jquery 中?

javascript - 如何从 JQuery AJAX 调用返回多个值?

javascript - jQuery AJAX 循环刷新 jQueryUI ProgressBar

javascript - 如何在不使用 Jquery UI 的情况下动态移动 HTML 5 范围输入句柄

javascript - 计算窗口宽度减去精确的像素数

javascript - Javascript中过滤具有相同id的对象数组并对序列进行排序并取最高的一个

javascript - 即使使用 javascript 输入正确的值后,html 表单仍然显示验证错误

json - 将 json 对象发布到 MVC3 Controller , bool 值始终为 false

javascript - 数据表和模态