Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery与属性过滤器最接近_Javascript_Jquery - Fatal编程技术网

Javascript jQuery与属性过滤器最接近

Javascript jQuery与属性过滤器最接近,javascript,jquery,Javascript,Jquery,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].check

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;
但是我们有更干净的方法来抓住它吗?

检查:


最接近的检查,不在同一级别。

关于您的问题:是的,是的(http://api.jquery.com/closest/)


您的代码不起作用,因为Nestest()在DOM树中向上移动,在您的情况下,它必须向上和向下移动,因为您的复选框0不是复选框513的祖先。

我认为您不应该需要[0]as。Nestest只返回找到的第一个元素,而parents()返回多个

$(el).closest("input[value='0']").prop("checked") = true;
这是我更喜欢的方式

这是假设您在选中复选框513时尝试选中“值0”复选框

编辑:对不起,误读了。实际上,您需要尝试获取标记,然后获取底层复选框。您实际上是在查找非直接父项的复选框

编辑2:你意识到你的编辑不正确吗?等待它会。。。你用的是兄弟姐妹而不是孩子我错了

编辑3:如何使用:

$(el).parents().get(':eq(2)').children(':first-child');
或者我们不是假设布局是固定的吗?

与任何其他jQuery方法一样支持属性选择器(尽管我不知道您提到的jQuery的具体版本),但这里的问题是,
.closest()
不只是查看一般的邻近区域,而是通过祖先进行查找。您试图选择的输入元素不是您要开始的元素的祖先。(由于输入不能包含其他元素,因此它们永远不会是任何事物的祖先……)

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

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

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

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

哇,我不敢相信你在问一个带有标签
jQuery
javascript
的问题……你不是这里的javascript-jQuery大师吗?哈哈,大师?!一点也不。我很正派,但这里有很多人比我更有知识:)所以我猜你的javascript金质徽章是个错误。。。你是一个谦逊的人。@gdoron-记住,在很大程度上,代表和徽章是社区对你的信任程度,以及你对堆栈溢出的上瘾程度:)我对JavaScript和jQuery有相当多的了解,这在周六晚上是一个愚蠢的错误,但是有很多人知道的比我多,但名声却不好。不是吗?我是一个很好的例子。+1作为解释,但我不能使用prop,因为我在jQuery1.5上。你能想出一个比我的编辑更好的方法吗?根据我的编辑,我会给顶级li一个类并选择它,但实际上你的编辑(我当时没有看到)更好,因为它不需要更改标记。
.prop()
部分并不是我答案的关键部分,我相信你知道你可以使用
.attr(“checked”,“checked”)
,当然也可以坚持使用
[0]。checked=true
,如果你确定总是有匹配的元素。我忘了在我的演示中设置正确的jQuery版本,但这里有一个1.4.4版本的更新:谢谢-你不必为我编造小提琴:)不客气。事实上,当我第一次回答这个问题时,我并没有真正注意到是谁在问这个问题——如果我真的注意到你的名字,我就会知道你会毫不费力地完全理解。(现在我知道是你,根据gdoron上面的评论,我有点惊讶…)是的-也许我不应该在周六晚上工作,因为有这么多干扰:-)我需要[0],因为我正在检查底层dom元素上的checked属性,我在发布后不久意识到,耐心地等待着洪水般的答案告诉我:)@AdamRackis hehe发生了什么:-)
$(el).closest('li.topMenu').find('input[value="0"]').prop("checked",true);