jQuery/Sizzle 选择器查找当前元素的父元素?
有没有办法只使用 jQuery/sizzle 的 CSS 选择器来获取所选元素的父元素?
我需要能够在使用 jQuery 时获取元素的父元素,但我无法 使用 jQuery('#myelement').parent()
因为我接收的是字符串形式的选择器,并且“用户”需要能够在树上向上移动。
我在文档中看不到任何内容,所以我想知道它是否未记录或者是否有我可以使用的黑客?
Is there a way I can get the selected element's parent using only jQuery's/sizzle's CSS selectors?
I need to be able to get an element's parent while using jQuery, but I'm unable use jQuery('#myelement').parent()
since I'm receiving the selector as a string and the "user" needs to be able to move back up the tree.
I can't see anything in the docs, so I'm wondering whether it's undocumented or if there's a hack I can use?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正确的解决方案(即实际使用 jQuery 选择器而不是 jQuery API 的解决方案)是这样的:
这意味着您的“当前元素”实际上必须是“has”参数而不是基本参数表达。它不应该改变任何东西,只是它的可读性比
<
稍差一些。作为参考,在某些情况下,jQuery API 可能无法有效替代选择器,例如:
在这种情况下,选择器允许过滤实时事件。
The correct solution (ie. the one which actually use jQuery selectors rather than jQuery API) is this one :
That means that your "current element" actually has to be the 'has' parameter rather than the base expression. It shouldn't change anything, except that it is a bit less readable than
<
.For reference, the jQuery API may not be a valid replacement to selectors in a few cases, such as :
In this case, the selector allows to filter the live events.
jQuery(jQuery('#myelement').parent())
正在获取对象,无需附加函数。好吧,笑话结束了;)
我猜您需要为实时功能选择父级,这就是为什么您不能以这种方式获得它。
这就是你做事的方式,让它发挥作用。
如果父元素没有 id 您可以使用更复杂的技巧
您可以使用 id 或标题或类,具体取决于页面上已有的内容
如果您确实需要仅通过 css 选择器找到它- 据我所知,CSS 选择器的设计是不可能的
jQuery(jQuery('#myelement').parent())
is getting the object without the additional function.Ok, end of jokes ;)
I'm guessing that You need the parent selected for the live function and that is why You can't get it this way.
It's the way You do it to make it work.
If the parent element has no id You can use more complicated tricks
You can use id or title or class, depends on what is already on the page
And if You really need it to be found by just css selector - as far as I know this is impossible with css selectors by design
这样的选择器不存在,CSS 中也不存在,jQuery/Sizzle 中也不存在。
可以改源码吗?
如果是,则可以添加自定义伪选择器:
使用示例(请注意,父级已经存在,因此我使用了 getParent 代替):
Such selector doesn't exists, nor in CSS neither in jQuery/Sizzle.
You can change the source code?
If yes, it is possible to add custom pseudo-selector:
Use example (Note that parent already exists, so I've used getParent instead):
由于 CSS 无法像 XPath 那样遍历树,因此我进行了一些修改并检查字符串中的字符
<
,对其进行拆分并调用.parent ()
手动。它不是最佳的,但它正在工作。Since CSS can't traverse back up the tree like XPath can, I'm doing a bit of munging and checking for the character
<
in the string, splitting on that and calling.parent()
manually. Its not optimal but it's working.