jQuery/Sizzle选择器查找当前元素';谁的父母?

jQuery/Sizzle选择器查找当前元素';谁的父母?,jquery,jquery-selectors,sizzle,Jquery,Jquery Selectors,Sizzle,是否有一种方法可以仅使用jQuery/sizzle的CSS选择器获取所选元素的父元素? 在使用jQuery时,我需要能够获取元素的父元素,但是我无法使用jQuery('#myelement').parent(),因为我将选择器作为字符串接收,“用户”需要能够向上移动树 我在文档中看不到任何东西,所以我想知道它是否没有文档记录,或者是否有我可以使用的黑客?jQuery(jQuery('#myelement')。parent()在没有附加函数的情况下获取对象 好了,笑话结束;) 我猜您需要为live

是否有一种方法可以仅使用jQuery/sizzle的CSS选择器获取所选元素的父元素?

在使用jQuery时,我需要能够获取元素的父元素,但是我无法使用
jQuery('#myelement').parent()
,因为我将选择器作为字符串接收,“用户”需要能够向上移动树

我在文档中看不到任何东西,所以我想知道它是否没有文档记录,或者是否有我可以使用的黑客?

jQuery(jQuery('#myelement')。parent()
在没有附加函数的情况下获取对象

好了,笑话结束;)

我猜您需要为live函数选择父级,这就是为什么您不能以这种方式获得它

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中不存在,在jQuery/Sizzle中也不存在

您可以更改源代码吗

如果是,则可以添加自定义伪选择器:

jQuery.expr[":"].getParent = function (node, index, prop, nodes) {
    return jQuery(node).parent(); 
};
使用示例(注意父级已经存在,所以我使用了getParent):


由于CSS不能像XPath那样遍历备份树,我正在进行一些搜索并检查字符
,正确的解决方案(即实际使用jQuery选择器而不是jQuery API的解决方案)如下:

$(':has(> #myElement)');

这意味着您的“当前元素”实际上必须是“has”参数,而不是基表达式。它不应该改变任何东西,除了它的可读性比
稍差一点,为什么您不能使用.parent()?他可能需要活动函数的父函数它确实需要通过CSS选择器来完成,因为选择器是作为字符串传入的。CSS不能像XPath那样遍历备份树,这相当令人恼火(正如@maël-nison所展示的,确实可以直接选择父母。
$(':has(> #myElement)');
$(document).on('click', ':has(> .widget)', function () {
    // ...
});