Вопрос от новичка
Добрый день :)
Запутался в следующей задачке. Нужно сделать счетчик цифр для каждого параграфа p и в конце выводить общее значение. Счетчик делаю через ссылку. Однако общее значение вывести не получается, поскольку переменная сидит внутри функции. Видимо тут нужно как то изменить архитектуру ? :help: Подскажите как тут можно поступить ? <p class="eqv"></p> <p class="eqv"></p> </p class="eqv"></p> <label for="amount">Amount:</label> <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;" />
$(document).ready(function() {
var count = 0;
$('p.eqv').each(function() {
var $thisParagraph = $(this);
$thisParagraph.append('<a href="#" class="nup">+</a><span>0</span><a href="#" class="ndown">-</a>');
var count = 0;
$thisParagraph.find('a').click(function(event) {
if (event.target.className == "nup"){
count++;
}
else if (event.target.className == "ndown"){
count = count -1;
}
$thisParagraph.find("span").text(count);
});
});
$('#amount').val(count+11);
});
|
удалено.
|
Убрал внутренний var, все работает и без него. Однако так и не понятно как поступить тут. Можно упростить задачу до такого варианта.
$(function(){
$('div.eqv a').each(function(){
var c=0;
$(this).click(function(){
c++;
$(this).text('Some text' + c);
});
});
$('div#sum').text(?);
});
<body> <div class="eqv"><a href="#">1</a></div> <div class="eqv"><a href="#">2</a></div> <div class="eqv">222</div> <div>111</div> <div id="sum"></div> </body> Допустим функция возвращает какое то значение через return, но и дальше что и как ?
$(function(){
$('div.eqv a').each(function(){
var c=0;
$(this).click(function(){
c++;
$(this).text('Some text' + c);
return c;
});
});
$('div#sum').text(?);
});
куда девать этот возвращенный с, если функция у нас анонимная..... И так тоже не работает:
$(function(){
var b = 0;
$('div.eqv a').each(function(){
var c=0;
$(this).click(function add(){
c++;
$(this).text('Some text' + c);
b =c;
});
});
$('div#sum').text(b);
});
|
удалено.
|
ваш код не работает, потому что в результат запишется с=0, а вызовы функции будут происходить по клику, который будет уже потом. Тут бы применить .live, он почему то у меня не работает. Однако я все же сделал работающий код, его нужно только отрефакторить.
Итак задача, нужно посчитать кол-во кликов по каждой ссылке и отобразить ниже сумму.
$(function(){
var c=0;
function aa(){
c++;
$(this).text("Click"+c);
cc();
};
var f=0;
function bb(){
f++;
$(this).text("Click"+f);
cc();
};
function cc(){
$('div#sum').text('Сумма:'+(c+f));
}
$('div.eqv1 a').click(aa);
$('div.eqv2 a').click(bb);
});
<div class="eqv1"><a href="#">1</a></div> <div class="eqv2"><a href="#">1</a></div> <div id="sum"></div> Задача упростилась, поскольку вместо each я вызываю click для конкретного дива и, соответсвенно, вызываю разные функции для каждого дива. Как сделать, что бы это работало в each, пока не придумал. :) |
удалено.
|
"код не проверял, если работать не будет просто суммируйте коллекцию значений после выполнения всех действий - делается доп выборка перед $('div#sum').text(с)."
Такого рода идеи ? тогда извините я вас не понял :) |
удалено.
|
удалено.
|
удалено.
|
Цитата:
http://ilyabirman.ru/meanwhile/2010/11/08/1/ |
удалено.
|
удалено.
|
| Часовой пояс GMT +3, время: 22:22. |