Best way to get the Original Target

后端 未结 5 546
孤街浪徒
孤街浪徒 2020-12-05 17:53

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 someth

相关标签:
5条回答
  • 2020-12-05 18:17

    You can do it in one line with 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...]

    0 讨论(0)
  • 2020-12-05 18:23

    in normal Javascript, var t = (e.originalTarget)?e.originalTarget:e.srcElement; should be enough to read it across all browsers.

    0 讨论(0)
  • 2020-12-05 18:34

    In conjunction with How to detect a click outside an element? here is how you might trap a sub-widget with similar hide-when-clicked-outside functionality to prevent your own pop-over from hiding along with it; in this case, we are trapping the JQuery UI Datepicker pop-over widget:

    // not using jquery .one handler for this, so we can persist outside click later
    $('html').click(function(evt) {
        // just return if element has the datepicker as a parent
        if ($(evt.target).parents('#ui-datepicker-div').length>0) return;
    
        //toggle shut our widget pop-over
        $('#mywidget').toggle();
    
        // now, unbind this event since our widget is closed:
        $(this).unbind(evt);
    });
    
    0 讨论(0)
  • 2020-12-05 18:36

    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

    0 讨论(0)
  • 2020-12-05 18:36

    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.

    0 讨论(0)
提交回复
热议问题