2010-02-13 8 views
1

HTML이 포함 된 경우 :addClass 경기를

<li class="widgetcontainer widget_text" id="text-3"> 
    <h3 class="widgettitle">Static Ad</h3> 
    <div class="textwidget"><img alt="" src="static/announcement.png"></div> 
</li> 

jQuery를 :

if($('.widget_text')[0]) { 
    $('.widgettitle').each(function() { 
     if ($(this).containts('Static Ad')) { 
     $(this).parent().addClass('myclass'); 
     } 
    }); 
} 

... 작동되지 않습니다. 둘 중 어떤 것도 :

if($('.widget_text')[0]) { 
    $('.widget_text').each(function() { 
     if ($(this).children('h3:contains:("Static Ad")')) { 
     $(this).parent().addClass('static-ad'); 
     } 
    }); 
} 

어떻게 수정합니까?

감사합니다.

답변

4

당신은 오타가 있습니다 if ($(this).contains('Static Ad')) {

시도 :

$('.widgettitle:contains("Static Ad")').parent().addClass('myclass'); 

또는

$('.widget_text').each(function() { 
    if ($(this).children('h3:contains("Static Ad")').length > 0) { 
    $(this).addClass('static-ad'); 
    } 
}) 

당신은 코드에서 추가로 대장 :이 (제거) 내가 당신을 생각 parent()을 삭제해야합니다.

게다가, $('.widget_text')[0]을 테스트 할 필요가 없습니다. 클래스 widget_text 아무 요소가없는 경우, $('.widget_text').each() 어쨌든 아무것도하지 않습니다)

+0

감사하지만 수정되었지만 클래스는 계속 추가되지 않습니다. – 3zzy

+0

'.contains()'는 이런 식으로 사용되지 않습니다. DOM 노드가 다른 DOM 노드 내에 있는지 확인합니다. – David

+0

@David : 예, 주목했습니다;) –

1

jQuery.contains은 하나의 DOM 노드가 다른 DOM 노드 내에 있는지 테스트하는 것입니다. 해당 텍스트에서 "고정 광고"로 클래스 widgettitle 과 자손이없는 자들을 필터링,

$('.widget_text').filter(function() { 
    return $(this).find('.widgettitle').text().indexOf('Static Ad') > -1; 
}).addClass('myclass'); 

클래스 widget_text 모든 요소를 ​​선택하며, :

대신 시도 myclass을 추가하십시오.