2014-10-14 9 views
0

Не могли бы вы взглянуть на this Demo и сообщить мне, почему события click на #pre и #nex только стрельба один раз!JQuery Click События Только пожарные

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 

var d = new Date(); 
var n = d.getMonth(); 
$("#month").html(months[n]); 

$(".row").on('click' , '#pre', function(){ 
    $("#month").html(months[n-1]); 
}); 

$("#nex").on('click' , function(){ 
    $("#month").html(months[n+1]); 
}); 

Я также попытался использовать метод делегата на #pre который снова не работает

ответ

5

Вам нужно уменьшать и увеличивать значение n для этой работы. Вы также должны убедиться, что вы не находитесь за пределами массива, когда вы это делаете, иначе вы получите исключение из диапазона вне диапазона.

$(".row").on('click' , '#pre', function(){ 
    n = (n === 0) ? months.length - 1 : n - 1; 
    $("#month").html(months[n]); 
}); 

$("#nex").on('click' , function(){ 
    n = (n === months.length - 1) ? 0 : n + 1; 
    $("#month").html(months[n]); 
}); 
+1

'n -' и 'n ++'? – Frogmouth

+0

'n + = 1' выглядит более читаемым, хотя –

+1

, если вы положили его перед' $ ("# month"). Html (months [n + 1]); 'вы можете использовать только' n' '$ (" #month "). html (months [n]);' – Frogmouth

0

Вы не меняете значение n, так что вы всегда будете получать в прошлом месяце с сегодняшнего дня. Получить текущее значение #month сначала в методе onclick.

0

Ваши события стреляют - вы просто устанавливаете одинаковое значение каждый раз, когда стреляют. попробуйте добавить n + = 1 и n- = 1 в свои события, чтобы изменить значение.

0

я изменить свой код и теперь работаю вы должны изменить значение счетчика будет каждый клик ..

вара месяцев = [ «Январь», «Февраль», «Март», «Апрель», «Май» «Июнь», «Июль», «Август», «Сентябрь», «Октябрь», «Ноябрь», «Декабрь»]; var days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; var d = new Date(); var n = d.getMonth();

$("#month").html(months[n]); 

$(".row").on('click' , '#pre', function(){ 
    $("#month").html(months[n-1]); 
    n=n-1 
}); 

$("#nex").on('click' , function(){ 
    $("#month").html(months[n+1]); 
    n=n+1 
}); 
Смежные вопросы