jQuery trigger mousedown registered by addEventListener

前端 未结 2 1247
时光说笑
时光说笑 2020-12-31 09:55

I want to simulate fake mousedown event by jQuery trigger() method, and I register mousedown event by native javascript method - addEventListener(). And I found it can\'t b

相关标签:
2条回答
  • 2020-12-31 10:11

    Try using

    EventTarget.dispatchEvent
    

    MDN link

    Your code will be something like

    var elem = document.getElementById('square');
    elem.addEventListener('mousedown', function () {
        alert('addEventListener');
    });
    $(elem).on('mousedown', function () {
        alert('on');
    });
    
    elem.dispatchEvent(new Event('mousedown'))
    

    You might have to use fireEvent if you are considering IE.

    object.fireEvent(bstrEventName, pvarEventObject, pfCancelled) 
    

    MSDN link

    It would be like

    if (document.createEvent) {
        element.dispatchEvent(event);
    } else {
        element.fireEvent("on" + event.eventType, event);
    }
    
    0 讨论(0)
  • 2020-12-31 10:37

    Jquery Only triggers the events that created by itself

    Even the order is also matters like : this Works

    $(elem).on('mousedown', function () {
        alert('on');
    });
    $(elem).trigger('mousedown');
    

    But Below code Will not Work

     $(elem).trigger('mousedown');
     $(elem).on('mousedown', function () {
        alert('on');
    });
    

    Take A look at This DEMO FIDDLE

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