Best way to get the Original Target

What's a jQuery like and/or best practices way of getting the original target of an event in jQuery (or in browser javascript in general).

I've been using something like this

$('body').bind('click', function(e){
        //depending on the browser, either srcElement or 
        //originalTarget will be populated with the first
        //element that intercepted the click before it bubbled up
        var originalElement = e.srcElement;
        if(!originalElement){originalElement=e.originalTarget;}                         
});

which works, but I'm not pleased with the two line feature sniffing. Is there a better way?


You can do it in one line with var originalElement = e.srcElement || e.originalTarget; var originalElement = e.srcElement || e.originalTarget; but it ain't pretty JQuery-like ;-)

[Edit: But according to http://docs.jquery.com/Events/jQuery.Event#event.target event.target might do...]


I believe e.target is what you require

$('body').bind('click', function(e){
                e.target // the original target
                e.target.id // the id of the original target                                               
});

If you go to the jQuery in Action website and download the source code, take a look at

  • Chapter 4 - dom.2.propagation.html
  • which deals with event propagation with bubble and capture handlers


    Using event.originalTarget can cause "Permission denied to access property 'XYZ' from a non-chrome context" -error, so i'd recommend using following:

    var target = event.target || event.srcElement || event.originalTarget;
    

    event.target works on Firefox, Opera, Google Chrome and Safari.

    链接地址: http://www.djcxy.com/p/2412.html

    上一篇: 在jQuery中检测移动设备的最佳方式是什么?

    下一篇: 获取原始目标的最佳方法