2015-10-15 49 views
0

我想根據哪個文本類是一個條件。我有一個菜單,將根據選擇哪個li來分配一個類。如果條件取決於哪個文本的類是

HTML室描述被選擇成類活性被顯示出來

<div class="vmenu" style="position: relative; top: 42px;"> 
<ul> 
<li class="active"> 
<span>Room description</span> 
</li> 
<li class="sep"> </li> 
<li> 
<span>Room Amenities</span> 
</li> 

的jquery

var package = $(".detail-layer.package-detail-layer") 
var active = $(".active").text() 

if($('#tbLayerDiv').css('display') == 'block') 
{ 
    if (active == "Room description") 
    { 
    //do something 
    } 
} 
+1

使用$(選擇).hasClass()。 – Omidam81

+0

根據索引,或換句話說,DOM中的位置或數據屬性等通常比根據隨機區分大小寫的文本更安全。 – adeneo

+0

你最好使用數據屬性而不是文本。 – epascarello

回答

0

active將包含由於線路的換行符<li>之間打破<span>,所以它不會匹配Room description。你可以使用.trim()刪除空格:

var active = $(".active").text().trim(); 

或者你可以得到的跨度文本:

var active = $(".active span").text(); 

但它會更好地使用屬性的元素本身認識到所選擇的菜單項。

<li class="active" data-name="room-desc"> 

然後,你可以這樣做:

var active = $(".active").data("name"); 

及更高版本:

if (active == "room-desc") 

這樣你就可以改變你的文本的措辭,而不必重新編寫代碼(想象一下,如果一個用戶請求谷歌翻譯翻譯該網站,它會打破你的腳本)。

0

https://jsfiddle.net/94xw513j/

<div class="vmenu" style="position: relative; top: 42px;"> 
<ul> 
<li data-val='1'> 
<span>Room description</span> 
</li> 
<li class="sep"> </li> 
<li data-val='2'> 
<span>Room Amenities</span> 
</li> 



$("ul li").on('click', function(event) { 
    $(this).parents("ul").find("li").removeClass("active"); 
    $(this).addClass("active"); 
    switch(eval($(this).data("val"))) 
    { 
     case 1: // room description 
     case 2: // room amenities 
      alert($(this).text() + ' is active '); 
      break; 
    } 

});