有没有一种方法可以只使用jQuery的/ sizzle的CSS选择器来获取选定元素的父级?jQuery/Sizzle选择器查找当前元素的父级?
我需要能够同时使用jQuery得到一个元素的父,但我无法使用jQuery('#myelement').parent()
,因为我收到的选择作为一个字符串和“用户”需要能够搬回在树上。
我在文档中看不到任何东西,所以我想知道它是否是无证的,或者是否有黑客可以使用?
有没有一种方法可以只使用jQuery的/ sizzle的CSS选择器来获取选定元素的父级?jQuery/Sizzle选择器查找当前元素的父级?
我需要能够同时使用jQuery得到一个元素的父,但我无法使用jQuery('#myelement').parent()
,因为我收到的选择作为一个字符串和“用户”需要能够搬回在树上。
我在文档中看不到任何东西,所以我想知道它是否是无证的,或者是否有黑客可以使用?
由于CSS无法像XPath那样遍历树状结构,我正在进行一些修复操作,并检查字符串中的字符<
,然后手动分割并调用.parent()
。它不是最优的,但它的工作。
jQuery(jQuery('#myelement').parent())
正在获取没有附加功能的对象。
好了,玩笑结束;)
我猜,你需要选择对肝功能的父母,这就是为什么你不能这样说。
jQuery('#'+jQuery('#myelement').parent().attr('id')).live(something);
这是你做它的方式使它工作。 如果父元素没有ID,您可以使用更复杂的技巧
//newline for reading comfort. skip it. --v
jQuery('[title='+jQuery('#myelement').parent()
.attr('title',Math.round(Math.random()*100000)+']').attr('title')).live(something);
您可以使用ID或标题或类,取决于什么已经是网页
上,如果你真的需要它被发现只是CSS选择器 - 据我所知这是不可能的与设计的CSS选择器
它真的需要通过CSS选择器来完成,因为选择器以字符串形式传入。它很烦人,CSS不能像XPath那样遍历树。 :( – 2010-03-05 14:42:01
这样的选择器不存在,也不在CSS中既没有jQuery/Sizzle。
您可以更改源代码?
如果是的话,就可以添加自定义伪选择:
jQuery.expr[":"].getParent = function (node, index, prop, nodes) {
return jQuery(node).parent();
};
使用的例子(注意,父母已经存在,所以我用的getParent代替):
jQuery('#myelement:getParent');
作为@maël-nison的[回答](http://stackoverflow.com/a/24571489/1273938)显示,确实有可能直接选择父项。 – LeoRochael 2016-10-17 11:31:01
正确的解决方法(即实际上使用jQuery 选择而不是jQuery的API的一个。)这是一个:
$(':has(> #myElement)');
这意味着,你的“当前元素”实际上已经成为“有'参数而不是基本表达式。它不应该改变任何东西,除了它比<
可读性稍差。
仅供参考,jQuery的API可能不是一个有效的替代在少数情况下选择,如:
$(document).on('click', ':has(> .widget)', function() {
// ...
});
在这种情况下,选择允许过滤现场活动。
为什么你无法使用.parent()? – 2010-03-05 10:17:18
他可能需要现场功能的父母 – naugtur 2010-03-05 13:13:57