开发者

After removing an element, IE does not fire other events, other browsers do

I have an event attached to a div element that will remove the element onclick. I also have a jQuery live event that I am attaching to the same element like so,

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

In FF, this event executes. But in IE8 the first event removes the element and the live event never takes place. I assume this has to do with the way the browsers bubble the开发者_StackOverflow社区 events, but I need to find a way to get both of these events to take place.

Here is a small example of the code, and it would not matter which event is first. I tried both. I assume this is because live requires propagation, and click does not.

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

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

Thanks for any help!

Metropolis

UPDATE

Sorry I left something out. The element is getting removed using a plugin function. So I need the functions to work together separately.


Gecko supports up/down bubbling, but IE only supports up bubbling. You might need to call the following on the remove event:

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

Here's a more complete solution:

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

Read http://www.quirksmode.org/js/events_order.html for more info

Here is a more accurate link for what the author was looking for: http://www.bennadel.com/blog/1822-Learning-jQuery-1-4-Remove-vs-Detach-.htm


Why not just attach one event that will do what you need it to do and then remove the element?

Like so:

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

    // remove the element
});


I did some testing of this and could not reproduce: http://jsfiddle.net/LdqyG/

I guess I need some details on the plug-in and how it is removing the element.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜