-1

ajax で読み込まれた要素で jQuery.one を使用しようとしています。要素が既にロードされている場合は機能しますが、要素がajaxを使用してロードされている場合は機能しません。

これが私がやろうとしていることです。


$("#selector").one('mouseenter', selMouseEnter);

function selMouseEnter() {
Some code....
}

事前にThx。シャシ

編集:

$(".pitem").on('mouseenter', selMouseEnter);

$(".pitem").mouseleave(function(){
    jQuery(this).find(".tooltip").remove();
    $(".pitem").on('mouseenter', selMouseEnter);
});

function selMouseEnter () {
    jQuery(this).find(".tooltip").remove();
        var id = $(this).attr('id').replace('myprize', '');
    var myObj = jQuery('#Py').data('myprize' + id);
    if(myObj) {
        Some code that is opening tooltip having buttons....
    }
}

ツールチップのボタンをクリックすると競合が発生し、ボタンに固有のものではなく、mouseenterイベントが再度呼び出されます。

注: #PY は ajax を使用して提供されます

4

3 に答える 3

1

コードを実行するときに要素が存在する必要がある静的フォームを使用しているため、要素がページに配置された後に.one()コードを実行する必要があります。

jQuery 1.7 以降では、次のようなデリゲート バージョンを使用できます。オブジェクトがページに追加されるたび.one()に、オブジェクトの最初の mouseenter に応答します。#selector

$(document).one('mouseenter', "#selector", selMouseEnter);

document理想的には、このコードの実行時に存在するの静的な親オブジェクトに置き換えます。これは、オブジェクト#selectorを使用するよりも効率的ですが、機能します。documentdocument

于 2012-04-06T04:09:32.150 に答える
0

動的に読み込まれた要素で jquery イベントを適切に機能させるには、この方法でイベントをアタッチする必要があります。

$("#parent").on({
  mouseenter: function (e) {
    // perform mouse enter event
  },
  mouseleave: function (e) {
    // perform mouse leave event
 }
}, '#selector');

#Parent は、要素が動的に読み込まれた要素の ID を表します。

于 2012-04-06T04:10:56.820 に答える
0

動的にロードされる要素であるため、 .live()または.on()またはlivequery ()を使用する必要があります。詳細についてはリンクを参照してください - jquery のバージョンに応じて適切な方法を使用してください

于 2012-04-06T04:14:17.350 に答える