为什么变量没有在我的事件处理程序中重置?

时间:2009-06-20 23:45:30

标签: javascript jquery ajax variables

这是我的代码:

$(document).ready(function () {
    var default_var = 2;
    var show_var = default_var;
    var total_var = 8;
    var increment_var = 2;


    var start_var = show_var+1;
    var end_var = show_var+increment_var;

    $("a[rel=more]").live("click", function(){

        $("#timeshare-listings li:last").after("<li class='ajax'></li>");
        $("#timeshare-listings li.ajax").load("http://www.goodbuytimeshare.com/listings/ajax/"+start_var+"/"+end_var+"/");
        $("#timeshare-listings li.ajax").removeClass("ajax");

        var show_var = end_var+1;

        return false;
    });
});

我第一次点击按钮时,它完全符合我的要求。不幸的是,由于某种原因,show_var永远不会改变它的价值。为什么不?我需要做些什么来改变它?

1 个答案:

答案 0 :(得分:6)

 ...
var show_var = default_var;
 ...

$("a[rel=more]").live("click", function(){
     ...
    // declares and initializes entirely new variable named show_var 
    // that will never be used again...
    var show_var = end_var+1;
     ...
});

您在活动show_var事件的处理程序中重新声明click。不要这样做 - 只需引用外部范围中的那个,它应该做你想要的......

 ...
var show_var = default_var;
 ...
$("a[rel=more]").live("click", function(){
    ...
    show_var = end_var+1; // update value in outer scope
    ...
});