变量保持旧的价值

每当我第二次单击“#print”按钮时,第一次单击的值将在实际值之前打印出来。

例如:我第一次点击按钮。 警告框打印出正确的值(’test1’)。

我第二次点击按钮。 警报框打印出第一个值(’test1’),然后按OK,然后在此之后,警告框打印出第二个值(’test2’)。

我有什么想法吗?

$(".ipdate").focus(function() { /*$('.dateBox').hide();*/ var tit = $(this).attr('id'); /*var full = '#'+tit+'B';*/ $('#dateBox').show(); $('#print').on('click', function(){ var bottle = $('.sday').val()+' '+$('.smon').val()+' '+$('.syear').val(); $('#'+tit).val(bottle); alert(tit); }); $('#close').on('click',function() { $('#dateBox').hide(); }); }); 

您正在注册多个事件,这就是您看到多个操作的原因! 你看到了吗? :)我有类似的情况,我花了一段时间来挑选出来。 您可以在发出旧事件之前取消注册旧事件。

  $(".ipdate").focus(function() { /*$('.dateBox').hide();*/ var tit = $(this).attr('id'); /*var full = '#'+tit+'B';*/ $('#dateBox').show(); $('#print').off('click'); $('#print').on('click', function(){ var bottle = $('.sday').val()+' '+$('.smon').val()+' '+$('.syear').val(); $('#'+tit).val(bottle); alert(tit); }); $('#close').off('click'); $('#close').on('click',function() { $('#dateBox').hide(); }); }); 

这应该可以解决您的问题。 使用off将取消注册旧事件。