Почему переменная не сбрасывается в моем обработчике событий? - PullRequest
0 голосов
/ 21 июня 2009

Вот мой код:

$(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 Ответ

6 голосов
/ 21 июня 2009
 ...
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
    ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...