2

私は以下のことをやろうとしています。dropdown-toggle クラスの < a > タグをクリックすると、ボタンに折りたたみのクラスがないかどうかを確認したいと思います。そうでない場合は、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>
4

4 に答える 4

3

.への引数に を含めないでくださいhasClass。引数は単なるクラス名であり、セレクターではありません。そう:

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

ただしaddClass、クラスは 2 回追加されないことに注意してください。必要に応じて、最初にチェックせずに呼び出すことができます。もちろん、クラスがあるかどうかに依存する他のhasClassロジックがある場合は、 .


A. Wolff 氏は、この質問に対するコメントで次のように述べています。

OPは相対的なbutton.navbar-toggleをクリックしたアンカーをターゲットにしたいと思います

その場合closestは、コンテナに移動してから、コンテナfind内のボタンを見つけます。

$('a.dropdown-toggle').click(function(){
    var a = $(this).closest('.user-controls').find('button.navbar-toggle').hasClass('collapsed');
    alert(a);
});
于 2013-09-25T08:32:08.580 に答える
1

問題は、hasClass メソッドにセレクター構文を使用していることです。すなわち。あなたのコードは.hasClass('.collapsed');代わりに持っています.hasClass('collapsed');

于 2013-09-25T08:33:51.977 に答える
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');
  }
});
于 2013-09-25T08:34:26.073 に答える