0

<li>要素がクリックされたときにクラスを追加したい。しかし、うまくいきませんでした。ここにJQueryスニペットがあります

$(".mama").click(function(){        
    var arr = ["cat","dog", "mice", "bird"];
    alink =  $(this).text();        

    $.each(arr, function(index, value) {
        if(alink == value){
            $(this).addClass('hi'); 
        }
    }); 
});

そしてHTML

<ul id="animal">
    <li class="mama"><a href="#">cat</a></li>
    <li class="mama"><a href="#">dog</a></li>
    <li class="mama"><a href="#">Mice</a></li>
</ul>

私も.mapでやろうとしましたが、何も起こりません。解決策といくつかの説明をお願いします。ありがとう

4

6 に答える 6

2

これはうまくいくはずです:

$(".mama").click(function(){   
    var $this = $(this);     
    var arr = ["cat","dog", "mice", "bird"];
    alink =  $(this).text();        

    $.each(arr, function(index, value) {
        if(alink == value){
            $this.addClass('hi'); 
        }
    }); 
});

thisの内部はDOM 要素でeachないため<li>です。

于 2013-09-11T06:42:47.470 に答える
1

おそらくこれを行う必要があります:

http://jsfiddle.net/reugB/1/

$('.mama').on('click', function(evt) {
    evt.preventDefault();
    $(this).addClass('hi');
});
于 2013-09-11T06:44:05.270 に答える
0

これを使用して、クリックされた現在の要素を参照します。

$(".mama").click(function (e) {
    e.preventDefault();
    $(this).addClass('hi');
});
于 2013-09-11T06:44:09.990 に答える
0

hiクリックした にクラスを追加する場合は、次のliようにします。

$(".mama").click(function(e){
    e.preventDefault();
    $(".mama").removeClass('hi');
    $(this).addClass('hi')        
});
于 2013-09-11T06:43:07.910 に答える
0
 .hi { background-color: #f00 !important;}


 $('.mama').on('click', function(evt) {
evt.preventDefault();
$(this).addClass('hi');

});

于 2013-09-11T07:50:31.260 に答える
-1
$(".mama").click(function(e){    
e.preventDefault();    
    var arr = ["cat","dog", "mice", "bird"];
    var alink =  $(this).find("a").text();        

    $.each(arr, function(index, value) {
        if(alink == value){
            $(this).addClass('hi'); 
        }
    }); 
});

参照テキストを見て見つける

于 2013-09-11T06:45:41.960 に答える