我有以下jQuery代码:
var letter_a = 0;
var letter_b = 0;
var letter_c = 0;
$(".abc li a").click(function ()
{
var selected = $(this).hasClass('selected');
$(this).closest('ul.abc').find('li a').removeClass('selected');
if (!selected)
{
$(this).addClass('selected');
}
if ($(this).hasClass("a"))
{
letter_a++;
}
else if ($(this).hasClass("b"))
{
letter_b++;
}
else if($(this).hasClass("a"))
{
letter_c++;
}
});
发生的情况是,当一个人点击一个链接,如:<a class="a">Option A</a>
,它将增加一个变量,依此类推。但是因为用户可以取消选择选项,也可以改变他们的想法,如果他们选择了不同的答案或取消选择,我还需要它递减。
我该怎么做呢?
谢谢
假设这与你的其他问题使用相同的HTML,我认为每次你选择一个答案时,可能更容易计数所有选定的项目:
var scoreA = 0, scoreB = 0, scoreC = 0;
$(".abc li a").click(function () {
var t = $(this);
var ul = t.closest('ul.abc');
var selected = t.hasClass('selected');
ul.find('li a').removeClass('selected');
if (!selected)
t.addClass('selected');
calculateScores();
});
function calculateScores()
{
scoreA = $('a.a.selected').length;
scoreB = $('a.b.selected').length;
scoreC = $('a.c.selected').length;
alert("A: " + scoreA + ", B: " + scoreB + ", C: " + scoreC);
}
http://jsfiddle.net/huW4k/2/你打算怎么处理总数呢?我想知道是否只获取选定框的长度会更容易一些
$(.a.selected).length;
$(.b.selected).length;
$(.c.selected).length;
这样做:
var letter_a = 0;
var letter_b = 0;
var letter_c = 0;
$(".abc li a").click(function ()
{
var selected = $(this).hasClass('selected');
$(this).closest('ul.abc').find('li a').removeClass('selected');
if (!selected)
{
$(this).addClass('selected');
}
if ($(this).hasClass("a"))
{
letter_a++;
if(letter_b != 0){
letter_b--;}
if(letter_c != 0){
letter_c--;}
}
else if ($(this).hasClass("b"))
{
letter_b++;
if(letter_a != 0){
letter_a--;}
if(letter_c != 0){
letter_c--;}
}
else if($(this).hasClass("a"))
{
letter_c++;
if(letter_a != 0){
letter_a--;}
if(letter_b != 0){
letter_b--;}
}
});