1

ソース コードは、JQuery を使用してロード イベント ハンドラーを要素に追加します。JSTestDriver を使用してこれをテストしています。

コードは次のようになります。

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

テストを実行すると、アラート ("Foo") は発生しません。それを次のように変更した場合:-

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

テストは機能します。

ただし、ソース コードが HTML 内で個別に実行される場合は、正常に実行され、イベントが "load" の場合でもアラート ("Foo") を取得できます。

これは JSTestDriver のバグですか、それとも間違ったことをしていますか? ユニットテストですべてのイベントハンドラーがトリガーされるまで待つ必要があります。(Thread.join() の行に何か) ?

-アジェイ

4

2 に答える 2

0

あなたの問題はイベント バインディングではなく、コード内の $(this) の意味にあると思います。

より広い範囲を取得できますか?

テストする 1 つの方法は、$(this) を、イベントをトリガーしようとしている要素の実際のセレクターに置き換えることです。

または、イベント バインディングの直前でも、この呼び出しを行って、要素の ID が目的の要素の ID と一致することを確認します。

alert($(this).attr('id'));
于 2010-12-29T20:19:39.477 に答える
0

load イベントがバインドされていない理由がわかりません。さらに良い質問は、jquery が同じ名前の 2 つの異なるメソッド (イベントをバインドするための load() と ajax されたコンテンツをロードするための load()) を持っている理由です。ここに別の構文がありますが、試してみることができます。

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

これがうまくいく場合は、この回答の横にあるチェックマークを選択してください。私はコメントを残すのに十分な担当者を獲得しようとしています。ありがとう!

また、バインディングコードはどこにありますか? 画像が既に読み込まれた後にイベントをバインドしている可能性はありますか?

于 2010-12-29T19:37:30.853 に答える