jQuery, как я могу передать args обработчику событий?

Лучшая вещь иметь в виду состоит в том, чтобы отслеживать ссылки на Ваши объекты. Очень легко закончиться с зависающими ссылками на объекты, о которых Вы не заботитесь больше. Если Вы не собираетесь использовать что-то еще, избавляться от него.

Привыкают к использованию поставщика кэша со скользящими истечениями, так, чтобы, если на что-то не ссылаются для желаемого окна времени, оно было разыменовано и очищено. Но если к этому получат доступ много, то это скажет в памяти.

7
задан Robert Harvey 4 August 2009 в 22:41
поделиться

2 ответа

Причина, по которой он вызывает при загрузке, заключается в том, что передача имени функции с аргументами активно вызывает ее. Вы можете эффективно имитировать то, что ищете, заключив вызов validateText в анонимную функцию вроде этого.

$(document).ready(function() {
    $("#myTextbox").blur(function(){
        // Since in your original example you used $("#myTextbox") as an arg, this mimics it
        validateText($(this), $("#Select1"));
    });
});

Анонимная функция, поскольку она использует ключевое слово this, должна немного лучше масштабироваться с вашим начальным селектором, если вы измените его с #myTextbox на textarea или что-то еще. =)

5
ответ дан 6 December 2019 в 12:53
поделиться

Используйте привязку для передачи дополнительных параметров прослушивателю событий:

http://docs.jquery.com/Events/bind

$(document).ready(function() {
    $("#myTextbox").bind("blur", [ $("#myTextBox"), $("#Select1")], validateText);
})

Затем получите доступ к данным из event.data:

function validateText(event) {
  textBox  = event.data[0];
  dropdown = event.data[1];
}
11
ответ дан 6 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

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