我开始研究评级系统,并且在我的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。
答案 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
});
});
虽然,我必须说这不是将文本设置为元素的好方法。最好将数据保存在其他位置,并将它们绑定到视图元素,以便它们自动更新。