2

div (「butMedWhite」クラス) 内の子要素をクリックすると、jquery は、親要素 (「.alternative」) をクリックしていると認識します。コンソール内に「this」をダンプしても、クラス「alternative」をクリックしました(以下のコードを参照)-「butMedWhite」クラスではありません-理由は誰にもわかりますか?html は次のとおりです。

<div class="alternative _activeCategory">
    <div class="alternative_inner"></div>
    <div class="expandable" style="display: block;">
        <div class=" criteriaContainer">
            <a class="butMedWhite altCreator">add rule</a>
        </div>
    </div>
</div>

ここにjqueryがあります:

$('.altExpander').on('click', '.alternative', function(e) {
                    console.log(this);
                    if(!$(this).hasClass('_activeCategory')){
                        expandCategory($(this));
                    }else{
                        closeCategory();
                    }
                });

助けてくれてありがとう!

4

2 に答える 2

2

jQuery は、ネイティブ DOM 関数と同様に、イベント ハンドラーをバインドした要素をコールバックにコンテキストとして提供します。

this代わりにクリックされた要素が必要な場合は、使用しないでくださいe.target

$('.altExpander').on('click', '.alternative', function(e) {
     var clicked = $(e.target);
     console.log(clicked);
     if(!clicked.hasClass('_activeCategory')){
            expandCategory(clicked);
     }else{
            closeCategory();
     }
});
于 2013-08-25T11:21:55.190 に答える
0

これは、次の行でセレクターが「.alternative」であるためです。

$('.altExpander').on('click', '.alternative', function(e)

thisアンカータグになりたい場合は、使用する必要があります

$('.altExpander').on('click', '.alternative a', function(e)
于 2013-08-25T11:26:43.370 に答える