2010-03-31 4 views
2
<div> 
    <div>test</div> 
</div> 

$("div:contains('test')").css('display','none'); 

나는이 사실을 알게되었습니다. 문제는 이것이 실행될 때 모든 div가 중첩되어 숨겨져 있다는 것입니다. 부모 div가 숨겨지지 않도록하려면 어떻게해야합니까? 나는 1.2.6을 사용하는 것으로 제한됩니다.중첩 된 div 내에서 선택기를 사용하려고 시도했습니다

답변

3
$("div:contains('test'):not(:has(div))").hide(); 
+0

전설, 그 일을 할 것입니다. 고맙습니다! – Dtour

1

우아한 솔루션을 원한다면 새로운 선택기를 정의하십시오. 불행히도 :empty은 텍스트 노드가있는 것으로 충분하지 않습니다. 어린이는 비어 있습니다.

$.extend($.expr[':'], { 
    leaf: function(elem, i, match) { 
    return $(elem).children().length == 0; 
    } 
}); 

그리고 당신이 할 수 있습니다

$("div:leaf:contains('test')").hide(); 
관련 문제