1

我正在使用 jQuery 1.3.2 和 Live Query 插件。该脚本需要在 FF 和 IE6 中工作。升级 jQuery 并改用 live 是不可能的。

不知何故,这个脚本不会被动态创建的元素调用。

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

});

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

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

在 IE6 和 FF 中,该函数被静态(已经存在的)元素正确调用。但是,动态创建的元素不会调用它。

可能是什么原因?

更新 我用“live”测试了相同的功能。它在 FF 中有效,但在 IE6 中无效,当然不是……这就是为什么我正在寻找使用 livequery 的解决方法。

4

1 回答 1

0

您是否有不能升级到 jQuery 1.4.2 并在那里使用内置live回调的原因?

如果 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 回答