2014-03-01 81 views
3

我試圖將類添加到以下< ul>中,其中包含字符串「Informationen」的h3元素。將類添加到最接近的ul

這就是HTML的輸出如何看起來像現在:

<h3>Informationen</h3> 
<ul> 
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</li> 
<li>Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes</li> 
<li>Donec quam felis, ultricies nec, pellentesque eu</li> 
</ul> 

我要實現的代碼是這樣的:

<h3>Informationen</h3> 
<ul class"normal"> 
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</li> 
<li>Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes</li> 
<li>Donec quam felis, ultricies nec, pellentesque eu</li> 
</ul> 

我有幾個H3元素具有不同的字符串,所以我用這個腳本抓取正確的一個:

$('h3').each(function() { 
    var $this = $(this); 
    var text = $this.html(); 
    if (text == 'Informationen'){ 
    alert(text); 
    }; 
}); 

現在警報顯示我字符串「Informationen」當找到包含此文本/字符串的元素時。

到現在類添加到最近的一個/下UL我嘗試這樣做:

$('h3').each(function() { 
    var $this = $(this); 
    var text = $this.html(); 
    if (text == 'Informationen'){ 
    //alert(text); 
    $this.closest('ul').addClass('normal'); 
    }; 
}); 

但這並沒有工作,像下面的腳本沒有工作過:

$('h3').each(function() { 
    var $this = $(this); 
    var text = $this.html(); 
    if (text == 'Informationen'){ 
    //alert(text); 
    $(this).closest('ul').addClass('normal'); 
    }; 
}); 

這裏有一個小提琴:http://jsfiddle.net/JNtw2/1/

任何人都可以指出我的解決方案嗎?

回答

6

closest()獲得最匹配的父元素,你要找next()作爲UL來的權利後,H3

$('h3').each(function() { 
    var $this = $(this); 
    var text = $this.html(); 
    if (text == 'Informationen'){ 

     $this.next('ul').addClass('normal'); 

    }; 
}); 

FIDDLE

+0

太棒了! thx快速回復! –

2

相反,你需要使用最接近()方法next()方法。

1

我可以建議你這個嗎?

注意:假設信息不會包含在另一個h3的句子中。

$('h3:contains(Informationen)').next().addClass('normal'); 

還要注意的是,你不必一個部門傳遞到next如果你知道,每一個h3標籤後跟ul標籤。

+0

不錯和短... thx! –