gpt4 book ai didi

javascript - jQuery 最接近属性过滤器

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:37 25 4
gpt4 key购买 nike

jQuery 1.5.1 是否支持 closest 方法中的属性选择器?

给定下面的结构,el 代表值为 513 的复选框,我试图向上移动并检查值为 0 的祖先复选框

$(el).closest("input[value='0']")[0].checked = true;

但是选择器没有返回任何内容。

我是不是错过了什么傻事?

enter image description here


编辑

唉,所以值为 0 的复选框不是 el 的祖先,只是 ul 祖先的兄弟。我得到它的工作

$(el).closest("ul").siblings("input[value='0']")[0].checked = true;

但是我们有更简洁的方法来获取它吗?

最佳答案

.closest() method 确实支持属性选择器与任何其他 jQuery 方法一样(虽然我不知道你提到的 jQuery 的具体版本),但这里的问题是 .closest() 不只是在一般附近寻找,它通过祖先上升。您正在尝试选择一个输入元素,该元素不是您开始使用的元素的祖先。 (鉴于输入不能包含其他元素,它们将永远成为任何事物的祖先...)

您应该能够通过首先选择目标复选框的父 li 元素来完成此操作:

$(el).closest('li:has(input[value="0"])')
.find('input[value="0"]').prop("checked",true);

演示:http://jsfiddle.net/Vpzyj/

当然,如果您能够将一个类添加到顶级菜单项中,您就不需要乱用“:has”,您可以说:

$(el).closest('li.topMenu').find('input[value="0"]').prop("checked",true);

关于javascript - jQuery 最接近属性过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com