2013-06-19 6 views
-1

У меня есть такой код:Jquery сумма значений атр для нескольких элементов

<a id="3" class="off area" name = "2" href="">Colchester</a> 
<a id="1" class="off area" name = "1" href="">Leicester</a> 
<a id="2" class="off area" name = "2" href="">London</a> 
<a id="4" class="on area" name = "1" href="">Winchester</a> 

И мне нужна сумма атрибута NAME, ссылки, которые имеют класс «на». (т. е. только Винчестер).

$('.area .on').each(function() { 
    alert(this.id); 
    total += parseInt(this.id, 10); 
}); 

Я могу подсчитать идентификаторы, но не атрибуты NAME. Так

total += parseInt(this.id, 10); 

это работает, но это не делает:

total += parseInt(this.attr('name'), 10); 

ответ

3

Попробуйте это:

total += parseInt(this.name, 10); 

Причина того attr используется на объекте JQuery, а не непосредственно this ключевому слову.

Вы можете сделать это лучше сделать это:

total += parseInt(this.name, 10) || 0; 

убедившись, что вы всегда получите числовое значение в виде суммы.

+1

Отлично, спасибо !! – Koffeehaus

2

Вы пытаетесь вызвать метод JQuery на DOM элемента (this)

Вам нужно это -

total += parseInt(this.name, 10); 

or

total += parseInt($(this).attr('name'), 10); 

Demo ----->http://jsfiddle.net/dtt7u/

1

Либо вы делаете:

total += parseInt(this.name, 10); 

или:

total += parseInt($(this).attr('name'), 10); 

BTW, используйте console.log() над alert().

1
var sum = 0; 
$('.area.on').each(function(index, elem) { 
    sum += parseInt($(elem).attr('name')); 
}); 

.area.on нет места

Смежные вопросы