Jquery点击事件仅触发一次

时间:2014-10-14 22:53:58

标签: javascript jquery

请您查看this Demo并告诉我为什么#pre#nex上的点击事件只会触发一次!

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上使用委托方法,这种方法再次无效

4 个答案:

答案 0 :(得分: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 :(得分:0)

你没有改变n的价值,所以你从上个月开始总是这么做。 首先在onclick方法中获取#month的当前值。

答案 2 :(得分:0)

你的事件正在解雇 - 你每次开火时都只是设置相同的值。尝试在事件中添加n + = 1和n- = 1来更改值。

答案 3 :(得分:0)

我正在编辑你的代码,现在正在工作 你应该每次点击改变计数器值..

var months = [" January"," February"," March"," April"," May&#34 ;,"六月","七月","八月","九月","十月",&#34 ;十一月","十二月"];     var days = [" Mon"," Tue"," Wed"," Thu"," Fri",& #34;周六","太阳"];     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
});