2012-03-02 4 views
2

간단한 문제가 있습니다. 나의 아침 차는 충분히 강하지 않다.jQuery div에 앵커 하위가있는 경우

IF div에는 앵커 인 아동이 있습니다.

(대부분의 jQuery 방법 같은) children 방법이를 반환
$('.box').click(function(){ 
    if ($(this).children('a').length) { 
     //some thing 
    } else { 
     //some thing else 
    } 
}); 

이후 :

$('.box').click(function(){ 
    if ($(this).children('a')) { 
     //some thing 
    } else { 
     //some thing else 
    } 
}); 

<div class="box"><a href="#"><img src="#" /></a></div> 
<div class="box"><img src="#" /></div> 
<div class="box"><img src="#" /></div> 
+0

당신이'그가 앵커에 추가 CSS 할 몇 가지 thing', 그것은 연기하는거야의 자식 때 야유를 식별하는 CSS 하위 선택 "연기하는거야> 야유"를 사용하는 것을 고려하십시오

cells = document.querySelectorAll('div'); [].forEach.call(cells, function (el) { //console.log(el.nodeName) if (el.hasChildNodes() && el.firstChild.nodeName=="A") { console.log(el)}; });
<div class="box"><a href="#"><img src="#" /></a></div> <div class="box"><img src="#" /></div> <div class="box"><img src="#" /></div>
. 좀 더 concreete "div.box>"div 클래스의 앵커 하위 .box " – DwB

답변

8

length 속성을 확인하십시오

뭔가처럼 .box하는 추가 클래스를 추가하지 마십시오 jQuery 인스턴스의 경우 항상 true으로 계산되므로 (항상 if 분기로 끝납니다). length 속성은 숫자를 반환하며 0 인 경우 false으로 평가됩니다.

+0

빙고 뱅고, 빠릅니다. 앵커의 양을 측정해야하는 이유는 무엇입니까? 그렇지 않으면 0 또는 어떤 것으로 시작하는 배열을 반환합니까? – technopeasant

+0

'children' 메소드는 jQuery의 인스턴스를 반환하는데,이 인스턴스는 요소를 포함하고 있는지 여부에 관계없이 항상 'true'로 평가됩니다. –

+0

저를 때려 눕히십시오, 설명을위한 너무 감사합니다. 가능한 빨리 받아 들일 것입니다. – technopeasant

0

.find()을 사용하여 셀렉터에서 추가 선택자를 검색 할 수 있습니다. http://jsfiddle.net/Nf3QH/ 희망이 있습니다!

0

요즘에는 jQuery를 사용할 필요가 없으므로 바닐라 자바 ​​스크립트를 약간 추가해야합니다. 코드가 매우 짧습니다.