( elem, types, selector, data, fn, one )
| 4572 | } |
| 4573 | |
| 4574 | function on( elem, types, selector, data, fn, one ) { |
| 4575 | var origFn, type; |
| 4576 | |
| 4577 | // Types can be a map of types/handlers |
| 4578 | if ( typeof types === "object" ) { |
| 4579 | |
| 4580 | // ( types-Object, selector, data ) |
| 4581 | if ( typeof selector !== "string" ) { |
| 4582 | |
| 4583 | // ( types-Object, data ) |
| 4584 | data = data || selector; |
| 4585 | selector = undefined; |
| 4586 | } |
| 4587 | for ( type in types ) { |
| 4588 | on( elem, type, selector, data, types[ type ], one ); |
| 4589 | } |
| 4590 | return elem; |
| 4591 | } |
| 4592 | |
| 4593 | if ( data == null && fn == null ) { |
| 4594 | |
| 4595 | // ( types, fn ) |
| 4596 | fn = selector; |
| 4597 | data = selector = undefined; |
| 4598 | } else if ( fn == null ) { |
| 4599 | if ( typeof selector === "string" ) { |
| 4600 | |
| 4601 | // ( types, selector, fn ) |
| 4602 | fn = data; |
| 4603 | data = undefined; |
| 4604 | } else { |
| 4605 | |
| 4606 | // ( types, data, fn ) |
| 4607 | fn = data; |
| 4608 | data = selector; |
| 4609 | selector = undefined; |
| 4610 | } |
| 4611 | } |
| 4612 | if ( fn === false ) { |
| 4613 | fn = returnFalse; |
| 4614 | } else if ( !fn ) { |
| 4615 | return elem; |
| 4616 | } |
| 4617 | |
| 4618 | if ( one === 1 ) { |
| 4619 | origFn = fn; |
| 4620 | fn = function( event ) { |
| 4621 | |
| 4622 | // Can use an empty set, since event contains the info |
| 4623 | jQuery().off( event ); |
| 4624 | return origFn.apply( this, arguments ); |
| 4625 | }; |
| 4626 | |
| 4627 | // Use same guid so caller can remove using origFn |
| 4628 | fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); |
| 4629 | } |
| 4630 | return elem.each( function() { |
| 4631 | jQuery.event.add( this, types, fn, data, selector ); |
no test coverage detected