jQuery: прикрепление события, вызывающее событие - PullRequest
1 голос
/ 20 сентября 2010

В одном разделе кода у меня есть это:

$("#searchbar").trigger("onOptionsApplied");

В другом разделе кода у меня есть это:

$("#searchbar").bind("onOptionsApplied", function () {
    alert("fdafds");
});

bind() выполняется до trigger(), но при просмотре страницы я никогда не получаю alert().

Почему бы и нет?Что я делаю не так с событиями?

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Возможно, ваш #searchbar не является частью DOM, когда вы выполняете:

  // This will not work if #searchbar is not part of the DOM
  //   or if the DOM is not ready yet.
$("#searchbar").bind("onOptionsApplied", function () {
    alert("fdafds");
});

Этот тип вещей часто случается, если .bind()вне документа готов или потому что #searchbar добавляется динамически.

Чтобы убедиться, что onOptionsApplied правильно связан даже в этих условиях, используйте .live() или .delegate():

// This can be outside document ready.
//   It binds all now and future #searchbars
$("#searchbar").live("onOptionsApplied", function () {
    alert("fdafds");
});

// Document ready
$(function() {
    // Whatever you do....

    // Make sure #searchbar is now part of the DOM

      // Trigger onOptionsApplied
    $("#searchbar").trigger("onOptionsApplied");
    });
});

jsFiddle пример

0 голосов
/ 20 сентября 2010

Я тоже попробовал и работает нормально.

поместил функцию связывания в обработчик готовности и затем вызвал событие ... оно должно пройти гладко

...