在ID组中查找类

时间:2013-06-30 19:38:55

标签: jquery

我开始研究评级系统,并且在我的jquery知识中找到了一个巨大的漏洞。到目前为止我的代码是:

<script>

$(document).ready(function() {
    $("#rate").delegate("div","click", function() {
        var targetid = $(this).attr("id");
        var voteval = $( '#' + targetid + ' span').html(); 
        if(isNaN(voteval)) { var voteval = 0; }
        voteval++;
        $( '#' + targetid + ' span').text(voteval);
    });

});
</script>

成功找到#rate组中div的ID并操纵相关跨度内的数据。

我的问题是我希望能够在包含某个类的组中找到div。用简单的英语,当用户点击它时会查找“.active”并将其删除(如果存在),然后在“当前”目标(此)上插入.active。

3 个答案:

答案 0 :(得分:0)

您可以在点击事件中执行此操作:

$('.active').removeClass('active');
$(this).addClass('active');

如果存在活动类,则会将其删除。

如果你有多个#rate,那么你需要找到最接近的(它应该是类而不是id):

var $parent = $(this).closest('#rate');
$parent.find('.active').removeClass('active');
$(this).addClass('active');

答案 1 :(得分:0)

您可以从其他人中删除有效课程,然后像这样添加到当前div

$("#rate div").removeClass('active');
$(this).addClass('active');

答案 2 :(得分:0)

我想你想要那样的东西

$(document).ready(function () {

    $("#rate").on("click", "div", function () {
        //    get text of span and make it int, also init to 0 if it's not a number
        var thisTextToInt = parseInt($(this).children("span").text()) || -1;    
        //    increment the text and set it to the span
        $(this).children("span").text(thisTextToInt+1);    

        $('#rate .active').removeClass('active');    //    remove previous active
        $(this).addClass('active');                  //    make this active
    }); 

});

虽然,我必须说这不是将文本设置为元素的好方法。最好将数据保存在其他位置,并将它们绑定到视图元素,以便它们自动更新。