2013-09-25 145 views
2

我正在尝试执行以下操作。当我点击带有下拉切换类的< a>标记时,我想查看该按钮是否没有collasped类。如果没有,我会再与jQuery使用jquery选择特定元素

<div class="user-controls"> 
    <button class="navbar-toggle navbar-btn collapsed"> 
     <span class="icon-reorder"></span> 
    </button> 
    <ul class="nav"> 
     <li class="hidden-xs"></li> 
     <li class="hidden-xs"></li> 
     <li class="user-profile"> 
      <a href="#" class="user-menu dropdown-toggle">Toggle</a> 
     </li> 
    </ul> 
</div> 

<script> 
    $('a.dropdown-toggle').click(function(){ 
     var a = $('button.navbar-toggle').hasClass('.collapsed'); 
     alert(a); 
    }); 
</script> 
+0

“如果没有,我会再加入用jQuery类”那么不需要检查,只需添加在所有情况下,类:'$(“a.dropdown拨动”)点击(函数(){ });' –

+0

我不太清楚标题的标题涉及到这个问题......? –

+0

@ T.J.Crowder对不清楚!我认为OP想要定位相对的button.navbar-toggle点击锚 –

回答

3

添加类不包括在参数hasClass.;参数只是一个类名,而不是选择器。所以:

$('a.dropdown-toggle').click(function(){ 
    var a = $('button.navbar-toggle').hasClass('collapsed'); 
    // No dot ----------------------------------^ 
    alert(a); 
}); 

但请注意,addClass将不添加类第二次,所以你可以把它而不检查第一,如果你喜欢。当然,如果你有其他逻辑取决于它是否具有类,那么你会想要使用hasClass


A.沃尔夫在关于这个问题的评论说:

我觉得OP要相对button.navbar拨动靶向点击锚

如果是这样,你” d使用closest上去容器,然后find找到容器内的按钮:

$('a.dropdown-toggle').click(function(){ 
    var a = $(this).closest('.user-controls').find('button.navbar-toggle').hasClass('collapsed'); 
    alert(a); 
}); 
+0

是的,谢谢,我只是注意到了我自己。为什么我不使用。点那里,但我做选择? –

+1

@PierceMcGeough因为hasClass()方法的参数不是选择器字符串,而是类名字符串http://api.jquery.com/hasClass/ –

1

问题是,您正在使用hasClass方法的选择器语法。即。你的代码有.hasClass('.collapsed');而不是.hasClass('collapsed');

0

以下代码检查元素是否具有“折叠”类。如果它没有这个类,它会添加它。

$('a.dropdown-toggle').on('click', function(){ 
    var e = $('button.navbar-toggle'); 
    if (e.hasClass('collapsed')) { 
    alert('The element has the class!'); 
    }else{ 
    //This adds the collapsed class to it 
    e.addClass('collapsed'); 
    } 
}); 
+0

OP想要在* * *元素上设置类。 –

+0

我的错误:)我编辑了答案。 –

0
$('a.dropdown-toggle').click(function(){ if($('button.navbar-toggle').hasClass('collapsed')) 
{ 
     $('button.navbar-toggle').removeClass('collapsed'); 
} 
else{ 
     $('button.navbar-toggle').addClass('collapsed');} }); 



     Try this 
+0

请提供您的代码的解释。只有代码答案是不鼓励的。 – RedEyedMonster