0

ユーザーがボタンをクリックした後に生成される要素にマウスオーバーイベントを登録しようとしています。

要素はajaxを介して生成されます。マウスローバーは、ajaxが作成した要素では機能しないようです。これを回避する方法があるかどうか疑問に思いました。どうもありがとう。

jQuery.ajax({
        type: "GET", 
        url: "http://list.php", 
        data: null, 
        dataType:"json", 
              timeout: 10000,
              global: true,
              error: oh_no,
        success: 
     });

var image = document.getElementById('image');

the image path are from ajax.

function listem(){
 ......codes
 ......codes

 image.innerHTML=  image.innerHTML + "<img src="\" + imagePath + \"\>";
} 

$(document).ready(function(){   


   $('#image img').mouseover(function(){

       alert('mouseOVER!!!');

   });

})





html    

<button id='showstuff' onclick='listem();'>show</button>
4

5 に答える 5

1

また、ページの読み込み時にリスナーを適用していますが、その時点ではオブジェクトは存在しません。「AddImageListeners()」のような関数を作成して、ajax 呼び出しの「成功」部分で呼び出します。

于 2012-08-01T23:13:28.077 に答える
1

委任 (.onメソッドを使用) を使用してみてください。イベント処理を親オブジェクトに委任できます。

 $('#image').on('click', 'img', function() {});
于 2012-08-01T23:14:12.990 に答える
1

まだ存在しない要素にマウスオーバーを適用することはできないため、ready 関数は既存の #image にのみ適用されます。リスナーを適用するためにajaxの成功に関する機能を実行すると、うまくいくはずです。

jQuery.ajax({
        type: "GET", 
        url: "http://list.php", 
        data: null, 
        dataType:"json", 
              timeout: 10000,
              global: true,
              error: oh_no,
        success: function(){
           $('#image img').mouseover(function(){
               alert('mouseOVER!!!');
           });
        }
     });
于 2012-08-01T23:14:26.083 に答える
0

セレクターにマウスオーバーを設定する代わりに、ライブ、デリゲート、または jQ バージョンに応じて使用する必要があります。

これは、ajax 呼び出しなどの動的に追加されるコンテンツにもイベント トリガーを追加する必要があることを意味します。

これを行うには、このようなものを使用します。

$(document).ready(
  $("html").on("mouseover","yourselector", yourOnMouseFunction())
);

幸運を祈ります(特定のセレクターでのみライブイベントが必要な場合は、html を任意の親セレクターに置き換えることができます)。

于 2012-08-01T23:13:58.393 に答える
0

ajax経由で作成した要素にjqueryを注入する必要があります。これは、.live()関数、.on()関数、またはlivequeryプラグインで行われます。.live() api.jquery.com/liveおよび docs.jquery.com/Plugins/livequery のリンクを参照してください。livequery

于 2012-08-01T23:16:09.013 に答える