jQuery最接近属性过滤器

Ada*_*kis 5 javascript jquery

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

给定下面的结构,el表示值为513的复选框,我正试图伸手去检查祖先复选框,其值为0

$(el).closest("input[value='0']")[0].checked = true;
Run Code Online (Sandbox Code Playgroud)

但选择器什么也没有返回.

我错过了一些傻事吗?

在此输入图像描述


编辑

叹息,所以值为0的复选框不是祖先el,只是祖先的兄弟ul.我得到它与合作

$(el).closest("ul").siblings("input[value='0']")[0].checked = true;
Run Code Online (Sandbox Code Playgroud)

但是我们有更清洁的方法来抓住它吗?

nnn*_*nnn 18

.closest()方法 支持属性选择与任何其他jQuery的方法(虽然我不知道你提到的jQuery的特定版本),但这里的问题是,.closest()不只是看在附近的广大地区,它通过上升祖先.您正在尝试选择一个不是您开始使用的元素的祖先的输入元素.(鉴于输入不能包含其他元素,它们永远不会成为任何东西......)

您应该可以通过首先选择目标复选框的父li元素来执行此操作:

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

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

当然,如果你能够在顶级菜单项中添加一个类,你就不需要乱用":has",你可以说:

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