jQuery multiple selectors order with "this" -
the order of 'i' , 'this' matters. first one, icon added behind button. second one, icon added before button. why that?
example 1:
$('.btn').click(function(){ $('i', this).removeclass().addclass("icon-down"); })
example 2:
$('.btn').click(function(){ $(this, 'i').removeclass().addclass("icon-down"); })
it clear these 2 forms using generate different results.
$('i', this)
this form find <i>
elements children of element pointed this
. structurally equivalent $(this).find('i')
preferred way write because think it's more readable.
from jquery doc, form documented jquery( selector [, context ] )
.
your other form:
$(this, 'i')
is not directly supported option jquery function there not documented options take (element, string)
. check jquery code, going interpreted $(element)
form , $(this)
second argument getting ignored. option documented jquery( element )
. second argument ignored if first argument dom element.
so, first option finds child <i>
elements. second option operates on button itself.
edit: in looking @ jquery source code, i've verified $(this, 'i')
treated same $(this)
. in fact, operative part of jquery function:
init: function( selector, context, rootjquery ) { if ( typeof selector === "string" ) { // handle selector string here // ... // handle: $(domelement) } else if ( selector.nodetype ) { this.context = this[0] = selector; this.length = 1; return this; }
Comments
Post a Comment