Как сохранить локальные переменные в функциях щелчка jQuery?

Я предпочитаю только использовать List<BusinessObject>. Typedefing это просто добавляет ненужный шаблон к коду. List<BusinessObject> определенный тип, это не просто никакой List объект, таким образом, это все еще со строгим контролем типов.

, Что еще более важно, объявляя что-то List<BusinessObject> облегчает для всех читающих код для сообщения то, что вводит, они имеют дело с, они не должны искать до фигуры, что BusinessObjectCollection, и затем помните, что это - просто список. typedefing необходимо будет потребовать последовательного (ре) соглашение о присвоении имен, за которым все должны следовать для него, чтобы иметь смысл.

11
задан Anurag 21 May 2010 в 08:18
поделиться

3 ответа

Вы можете создать замыкание и назначить i локальной переменной замыкания. Затем переменной gid будет присвоено значение i в момент создания замыкания, а не при запуске функции.

for(var i=0; i<3; i++){
    (function() {
        var gid = i;
        $('#tmpid'+i).click(function(){
            alert(gid);
        });
    })();
}
23
ответ дан 3 December 2019 в 03:35
поделиться

Вы создали замыкание, в котором переменная «i» используется совместно несколькими обработчиками кликов.

Поскольку в Javascript нет области действия блока, вам нужно передать «i» новой функции, чтобы она была скопировано по значению в новый экземпляр:

function bindStuff(i) {
    $('#tmpid'+i).click(function(e){
                    var gid = i;
                    alert(gid);
            });
}

for(var i=0; i<3; i++){ bindStuff(i); }

Вот еще один похожий вопрос: Замыкание внутри циклов в JavaScript - простой практический пример

1
ответ дан 3 December 2019 в 03:35
поделиться

Я прочитал резервную копию собственного метода data () jQuery. Я реализовал это, и он тоже работает. Он скрывает некоторые фактические функции обработки замыканий,

0
ответ дан 3 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: