I've been trying to understand how different pointer events (touch, mouse) are fired in various browsers/on various devices. On that purposed I have written a tiny webpage for testing events http://tstr.29pixels.net.
A few weeks later I've run into Mozilla's event listener test page at http://mozilla.github.io/mozhacks/touch-events/event-listener.html, which produced a very different results (I saw events fired that wasn't showing in my original test tool).
Both websites use different style of binding events, so I'd love to know, where is the difference in binding those events?
For example, pick up your tablet / smartphone with Chrome and try clicking the button on my web. In most cases two events are fired - touchstart and touchend (with occasional touchmove). Then try the Mozilla's tool. There is much more (even including click).
My binding:
$("#button").on('mouseenter mouseleave ... mousemove click', function(e){
...
}
Mozilla binding:
var events = ['MSPointerDown', 'MSPointerUp', ... , 'MSPointerCancel'];
var b = document.getElementById('button');
for (var i=0; i<events.length; i++) {
b.addEventListener(events[i], report, false);
}
These are just the most important parts, full javascript code is written right in the index page of both websites (it's not long).
If anyone could bring some light into this matter for me, I'd be very grateful.
The jQuery bind() event is used to attach one or more event handlers for selected elements from a set of elements. It specifies a function to run when the event occurs. It is generally used together with other events of jQuery. Syntax: $(selector).
on() method is the preferred method for attaching event handlers to a document. For earlier versions, the . bind() method is used for attaching an event handler directly to elements. Handlers are attached to the currently selected elements in the jQuery object, so those elements must exist at the point the call to .
Purpose. The event binding allows you to add an event handler for a specified event so that your chosen JavaScript function will be invoked when that event is triggered for the associated DOM element. This can be used to bind to any event, such as keypress , mouseover or mouseout .
$('#b1'). on('click', function(){ $('#select_item'). trigger('change'); }); $('#select_item'). on('change', function(){ var jbyr = $(this).
jQuery also uses addEventListener
internally. Depending on the event there might be some mapping or internal tweaks done by jQuery.
But the main difference between your code and the one of Mozilla is that you call e.preventDefault();
in your callback method, but Mozilla does not prevent the default behavior for the event.
Calling e.preventDefault();
will not only prevent the default behavior but as a result it will also prevent certain other event to occur. e.g. if you prevent mousedown
or mousemove
no drag
event will occur.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With