jQuery最接近属性filter

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

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

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

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

我错过了一些傻事吗?

在此处输入图像描述


编辑

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

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

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

.closest()方法支持与任何其他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); 

我相信你不应该需要[0]因为.closest只返回找到的第一个元素,而不像parent()那样返回多个元素。

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

是我喜欢这样做的方式。

这是假设您在检查513框时检查“值0”复选框。

编辑:对不起,误读了这个。 实际上,您需要尝试获取<\ li>标记,然后获取基础复选框。 您实际上在寻找不是直接父母的复选框。

编辑2:您意识到您的编辑不正常吗? 等等……它会…你使用兄弟姐妹而不是孩子我的错误。

编辑3:如何使用:

 $(el).parents().get(':eq(2)').children(':first-child'); 

或者我们不假设布局是固定的?

检查: http : //api.jquery.com/closest/

 .closest( selector ) // version added: 1.3 

最近检查DOM树而不是同一级别。

关于你的问题:是的,确实如此(http://api.jquery.com/closest/)

你的代码不起作用,因为nearest()通过DOM树上升,在你的情况下,它必须上下移动,因为你的复选框0不是复选框513的祖先。