$(это).загрузить(функция () {}); не работает вместе с JSTestDriver

Исходный код добавляет обработчик события загрузки к элементу с помощью JQuery. Я тестирую это с помощью JSTestDriver.

Код выглядит примерно так: -

       $(this).load(function () {
           alert("Foo");
       });

Когда я запускаю тесты, предупреждение («Foo») никогда не происходит. Если я изменю его на: -

       $(this).ready(function () {
           alert("Foo with Ready");
       });

Тест работает.

Однако если исходный код выполняется отдельно в HTML, то он работает нормально, и я могу получить предупреждение («Foo»), даже когда событие «загружается».

Это ошибка в JSTestDriver или я что-то делаю не так? Да, я должен ждать, пока все обработчики событий не сработают в модульных тестах. (Что-то в строках Thread.join())?

-Аджай


person user855    schedule 29.12.2010    source источник
comment
К какому типу элемента относится $(this)?   -  person karim79    schedule 29.12.2010
comment
и я хочу, чтобы функция вызывалась только после завершения загрузки изображения   -  person user855    schedule 29.12.2010


Ответы (2)


не уверен, почему событие загрузки не привязывается. еще лучший вопрос заключается в том, почему у jquery есть два разных метода с одинаковыми именами (load() для привязки события и load() для загрузки некоторого ajax-контента). вот альтернативный синтаксис, который вы можете попробовать.

$(this).bind('load', handler);

если это работает для вас, пожалуйста, установите флажок рядом с этим ответом. я пытаюсь получить достаточно репутации, чтобы оставлять комментарии, ха-ха. Спасибо!

также, где ваш код привязки? возможно ли, что вы привязываете событие после того, как изображение уже загружено?

person dqhendricks    schedule 29.12.2010

Я считаю, что ваша проблема не в привязке события, а в значении $(this) в вашем коде.

Можем ли мы получить более широкий охват?

Один из способов проверки — заменить $(this) фактическим селектором элемента, с которым вы пытаетесь инициировать событие.

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

alert($(this).attr('id'));
person jondavidjohn    schedule 29.12.2010