Как я могу привязать много обработчиков событий к одному событию, используя jQuery? - PullRequest
1 голос
/ 31 марта 2009

Я испытываю странное поведение с jQuery при попытке подключить более одного обработчика события к одному событию.

Как бы я связал два разных обработчика событий с одним и тем же событием?

$(this).focus(function(){/*...*/});
$(this).focus(function(){/*...*/}); // replaces the previous one?

Чего мне не хватает?

Обновление

Знаете ли вы, влияет ли это на способ передачи данных события? Похоже, что добавление второго обработчика события приводит к тому, что свойство eventObject.data возвращает undefined ...?


Эпилог

Проблема была как-то связана с тем, как jQuery нормализует обработку событий, и как свойство данных eventObject менялось в зависимости от маршрутизации. В какой-то момент у меня был таймер задержки, который позднее считывал свойство, когда оно было неопределенным решил ее, просто создав для нее локальный временный.

obj.inputText.bind('blur', obj, function(e) {
    var div = e.data.div;
    setTimeout(function() { div.hide(); }, 333); // works!
    // setTimeout(function() { e.data.div.hide(); }, 333); // does not work
});

Ответы [ 3 ]

3 голосов
/ 31 марта 2009

Это работает. Я просто дважды проверил с этим кодом:

$(document).ready(function() {
  $("#FirstName").focus(function() {
    console.log("focus1");
  });

  $("#FirstName").focus(function() {
    console.log("focus2");
  });
});

И выдает два консольных сообщения, когда поле ввода сфокусировано.

Вы уверены, что оба ваших обработчика не запущены?

1 голос
/ 12 июня 2009

Разве вы не можете создать в "главной" функции, которая вызывает все необходимые обработчики?

$ (this) .focus (function () {function1 (); function2 (); etc .....});

0 голосов
/ 31 марта 2009

Теоретически это должно работать, попробуйте, если все обработчики запущены, используя:

$(this).focus( function() { alert('handler1'); });
$(this).focus( function() { alert('handler2'); });
$(this).focus();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...