1

jQuery 1.3.2 と Live Query プラグインを使用しています。スクリプトは IE6 だけでなく FF でも動作する必要があります。jQuery をアップグレードして代わりにライブを使用することはできません。

どういうわけか、このスクリプトは動的に作成された要素によって呼び出されません。

    $('select').livequery('change',function(){
      var select_id  = $(this).attr("id");                                                                            ...
...
...

});

$('select').livequery('mouseover',hideExtensions());

function hideExtensions(){
...
...
}

IE6 と FF の両方で、関数は静的 (既存の) 要素によって正しく呼び出されます。ただし、動的に作成された要素によって呼び出されていません。

その理由は何ですか?

更新 「ライブ」で同じ機能をテストしました。FFでは機能しましたが、もちろんIE6では機能しませんでした...そのため、livequeryを使用した回避策を探しています。

4

1 に答える 1

0

livejQuery 1.4.2にアップグレードして、組み込みのコールバックを使用できない理由はありますか?

livequeryが機能しない場合は、コアJavaScriptを使用した「手動」イベント委任を試すことができ、直接の親へのイベントバブリングに依存します。次のようなDOM構造を持っているとしましょう。

<div id='something'>
    <a href='#' class='some-tag'></a>
    <a href='#' class='some-tag'></a>
    <a href='#' class='some-tag'></a>
    <!-- more dynamic elements 'a' tags identical to those above added here -->
</div>

そしてあなたのJavaScriptで:

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

something.addEventListener('click', function(e) {
    e = window.event || e;

    // If the target of the event is the added anchor we're looking for
    if (e['srcElement' in e ? 'srcElement' : 'target'].getAttribute('class') === 'some-tag')
        // code block goes here

    return false;

}, false);
于 2010-05-18T16:55:56.687 に答える