$ (this) .load (function () {....});не работает вместе с JSTestDriver - PullRequest
1 голос
/ 29 декабря 2010

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

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

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

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

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

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

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

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

-Ajay

Ответы [ 2 ]

0 голосов
/ 29 декабря 2010

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

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

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

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

alert($(this).attr('id'));
0 голосов
/ 29 декабря 2010

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

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

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

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

...