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里面each不是DOM元素<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

如果您的意思是将类添加hi到 clicked li,请执行以下操作:

$(".mama").click(function(e){
    e.preventDefault();
    $(".mama").removeClass('hi');
    $(this).addClass('hi')        
});
于 2013-09-11T06:43:07.910 回答
0

使用来引用被点击的当前元素。

$(".mama").click(function (e) {
    e.preventDefault();
    $(this).addClass('hi');
});
于 2013-09-11T06:44:09.990 回答
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 回答