if condition取决于该类的文本

时间:2015-10-15 19:01:01

标签: javascript jquery html

我正在尝试根据该类的li文本来创建条件。我有一个菜单,根据选择的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
  }
}

2 个答案:

答案 0 :(得分: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")

通过这种方式,您可以更改文本中的措辞而无需重写代码(想象一下,如果用户要求Google翻译翻译网站,则会破坏您的脚本。)

答案 1 :(得分: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;
    }

});