jQuery中的一个常见模式是一种接受回调的方法,该方法传递数组的元素及其该数组中的索引。但是,似乎完全是随机的。例如,从jQuery docs在
http://api.jquery.com:
> jQuery.each(collection,callback(indexInArray,valueOfElement))
> .each(function(index,Element))
> jQuery.map(array,callback(elementOfArray,indexInArray))
> .map(callback(index,domElement))
> jQuery.grep(array,function(elementOfArray,indexInArray),[invert])
> .filter(function(index))
在三种情况(jQuery.each,.each,.map)中,索引首先出现。在另外两个(jQuery.grep,jQuery.map)中,元素首先出现。我知道api现在已经设置好了,但是对我来说似乎是一个很大的不一致。
有没有我失踪的模式,还是随机的?这应该是固定的还是应该闭嘴并记住他们?
解决方法
这不是完全随机的。因为:
$.map( $('selector'),function(el,index) { /* element (DOMElement) is first,index optional */ } ); $('selector').map(function(index) { /* 'this' (DOMElement) is first.... index optional */ });
看模式?第二个例子有一个第二个参数,但它只是方便的传递,它是一样的。
模式是第一个参数总是比第二个参数重要,最后一个参数应该是最不重要的(“更可选”)。因此,如果您只需要一个参数,则不需要指定所有最不重要的参数。而在$(…)的情况下,每个,通常你甚至不需要任何参数,因为这只是你想要的。