CSS选择器“如果它有这个孩子”

时间:2013-08-22 18:27:50

标签: javascript jquery css jquery-selectors

我想选择这个div:

<div class="k-widget k-window">

如果有这个孩子

<div id="window_Monthly">

我试过了:

$("div.k-window:has(div#window_Monthly)")

3 个答案:

答案 0 :(得分:3)

您应该避免使用:has()。根据API,

  

因为:has()是一个jQuery扩展而不是CSS规范的一部分,使用:has()的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。为了在现代浏览器中获得更好的性能,请使用$(“your-pure-css-selector”)。has(selector / DOMElement)。


但是,还有其他一些方法可以解决这个问题:

SELECTORS:

$("div.k-window div#window_Monthly")
$(".k-window #window_Monthly")

样本: http://jsfiddle.net/JHQXd/1/

IF / LENGTH:

IMO,最好使用.find()代替.children(),但两者都有效。

if($('div.k-window').find('#window_Monthly').length)
     //do something

if($('div.k-window').find('#window_Monthly').length > 0)
         //do something

样本: http://jsfiddle.net/JHQXd/2/

答案 1 :(得分:1)

您的解决方案有效。请检查jsFiddlehttp://jsfiddle.net/JHQXd/

答案 2 :(得分:0)

$('.k-widget>#window_Monthly').parent()

如果孩子不是第一级后裔:

$('.k-widget #window_Monthly').parents('.k-widget')