javascript - 使用parents(),与Jquery中的$(this)函数最接近

标签 javascript jquery

我有这样的复选框:

<input class="checkField" onchange="freezeChildren()" type="checkbox" id ="tra"/>

及其功能:

function freezeChildren() {
    if (this !== null && $(this).is(":checked")) {
        var parent = $(this).closest("ul");
        var children = parent.find("input[type=checkbox]");
        children.prop("checked", false);
        children.prop("disabled", true);
    }
}

当我调试时,问题出在这部分:

$(this).closest("ul");

Jquery 不想从“this”-复选框点查找父级/最近的函数。 Visual Studio 中的上下文未定义。

即使这样也不起作用:

$(this).parents('html');

Jquery 可以工作,因为我检查了这个并工作了:

$.find('html') or $.find('#tra').

我在 IE11 上工作。有人可以帮忙吗?

最佳答案

您想要做的是将事件传递给函数,然后使用 event.currentTarget 获取受影响的项目。

如您所见,onchange="freezeChildren()" 变为 onchange="freezeChildren(event)"

然后在函数中我们只需通过 event.currentTarget 来利用该属性

function freezeChildren(event) {
  let target = event.currentTarget
  if (target !== null && $(target).is(":checked")) {
    var parent = $(target).closest("ul");
    var children = parent.find("input[type=checkbox]");
    children.prop("checked", false);
    children.prop("disabled", true);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>
    <input class="checkField" onchange="freezeChildren(event)" type="checkbox" id="tra" />
  </li>
</ul>

<小时/>

jQuery 方式

你应该做的是从html中删除代码并使用所有jquery

$(document).on('change', '.checkField', function(){
  let target = $(this)
  if (target.is(":checked")) {
    var parent = target.closest("ul");
    var children = parent.find("input[type=checkbox]");
    children.prop("checked", false);
    children.prop("disabled", true);
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>
    <input class="checkField" type="checkbox" id="tra" />
  </li>
</ul>

关于javascript - 使用parents(),与Jquery中的$(this)函数最接近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48723593/

相关文章:

javascript - Android 硬件后退按钮未触发 'popstate'

java - 将 JSON 发送到 Spring MVC Controller

javascript - jQuery 使用 CSS 动画在点击时切换不透明度

javascript - 我可以查看 JavaScript 函数在 Firebug 中执行需要多长时间吗?

javascript - 如何检查 Stripe 元素中的 Stripe 优惠券有效性?

javascript - Jquery - 超时函数

javascript - 自定义 Twitter 时间轴小部件

javascript - 在什么情况下 websocket 关闭事件会告诉你 wasClean 是假的?

jquery - 仅通过变量名引用 jQuery 对象(moSTLy DOM 对象)还是通过 $ 更快?

javascript - 使用 append() 时在按钮内添加跨度