mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #13471. $().on(".xyz"...) should avoid later crash.
If the event type is an empty string we end up hanging in .off() which makes for mighty hard debugging. Instead treat it as a no-op. Docs seem clear this is not allowed.
This commit is contained in:
parent
31478b9012
commit
2bbc3d5860
@ -66,6 +66,11 @@ jQuery.event = {
|
|||||||
tmp = rtypenamespace.exec( types[t] ) || [];
|
tmp = rtypenamespace.exec( types[t] ) || [];
|
||||||
type = origType = tmp[1];
|
type = origType = tmp[1];
|
||||||
namespaces = ( tmp[2] || "" ).split( "." ).sort();
|
namespaces = ( tmp[2] || "" ).split( "." ).sort();
|
||||||
|
|
||||||
|
// There *must* be a type, no attaching namespace-only handlers
|
||||||
|
if ( !type ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// If event changes its type, use the special event handlers for the changed type
|
// If event changes its type, use the special event handlers for the changed type
|
||||||
special = jQuery.event.special[ type ] || {};
|
special = jQuery.event.special[ type ] || {};
|
||||||
|
@ -555,6 +555,22 @@ test("bind(), multi-namespaced events", function() {
|
|||||||
jQuery("#firstp").trigger("custom");
|
jQuery("#firstp").trigger("custom");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("namespace-only event binding is a no-op", function(){
|
||||||
|
expect(2);
|
||||||
|
|
||||||
|
jQuery("#firstp")
|
||||||
|
.on( ".whoops", function() {
|
||||||
|
ok( false, "called a namespace-only event" );
|
||||||
|
})
|
||||||
|
.on( "whoops", function() {
|
||||||
|
ok( true, "called whoops" );
|
||||||
|
})
|
||||||
|
.trigger("whoops") // 1
|
||||||
|
.off(".whoops")
|
||||||
|
.trigger("whoops") // 2
|
||||||
|
.off("whoops");
|
||||||
|
});
|
||||||
|
|
||||||
test("bind(), with same function", function() {
|
test("bind(), with same function", function() {
|
||||||
expect(2);
|
expect(2);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user