删除元素后,IE不会触发其他浏览器的其他事件

时间:2010-08-24 20:38:39

标签: jquery

我有一个附加到div元素的事件,它将删除元素onclick。我还有一个jQuery live事件,我附加到相同的元素,如此,

$("#divEle").live('click', function() {
    alert($(this).html());
});

在FF中,此事件执行。但是在IE8中,第一个事件会删除该元素,并且永远不会发生直播事件。我认为这与浏览器冒泡事件的方式有关,但我需要找到一种方法来实现这两个事件。

这是代码的一个小例子,首先是哪个事件无关紧要。我试过了两个。我认为这是因为实时需要传播,而点击则不需要。

$(function() {
    $("#myele").live('click', function() {
        alert('works in ff');
    });

    $("#myele").click(function() {
         $("#myele").remove();
    });
});

感谢您的帮助!
大都会

更新

抱歉,我遗漏了一些东西。使用插件函数删除该元素。所以我需要这些功能单独协同工作。

3 个答案:

答案 0 :(得分:1)

Gecko支持上/下冒泡,但IE只支持冒泡。您可能需要在remove事件上调用以下内容:

event.stopPropagation(for gecko)
window.event.cancelBubble = true(即)

这是一个更完整的解决方案:

function doSomething(e)
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

阅读http://www.quirksmode.org/js/events_order.html了解详情

以下是作者所寻找内容的更准确的链接:http://www.bennadel.com/blog/1822-Learning-jQuery-1-4-Remove-vs-Detach-.htm

答案 1 :(得分:0)

为什么不直接添加一个可以执行您需要的操作然后删除该元素的事件?

像这样:

$("#divEle").live('click', function() {
    // do stuff that you want to do first

    // remove the element
});

答案 2 :(得分:0)

我对此进行了一些测试,无法重现:http://jsfiddle.net/LdqyG/

我想我需要有关插件的一些细节以及它是如何删除元素的。