i
- это индекс итерации, аналогичный i
, который вы использовали бы в структуре цикла for
. Это необязательный параметр для каждого, потому что он не обязательно нужен, потому что, если индекс не имеет значения для вашей внутренней логики, он не имеет значения.
Обратите внимание, что jQuery.each()
, вызываемый статически, отличается от того, который вызывается для коллекции jQuery. В первом случае i
стоит первым, а второй аргумент является фактическим значением, и его можно использовать для перебора любого массива, подобного объекту.
$([1,2,3,4,5], function(i,value){
alert(i + '=' + value);
});
Принимая во внимание, что при вызове коллекции вы должны использовать this
для ссылки на значение, поскольку оно является элементом dom.
$('a[href]').each(function(i){
alert(i + '=' + $(this).attr('href');
});
Теперь, что касается вашего вопроса относительно CSS:
Я хочу запустить этот пример кода в событии mouseover.
$('div').mouseover(function(event){
var $this = $(this);
if($this.css('color') != 'blue'){
$this.css('color', 'blue');
}
});
Большая часть функции jquery автоматически перебирает коллекцию, применяя обратный вызов oyur к каждому элементу коллекции. Поэтому, когда вы что-то делаете с событием, вам не нужно использовать each
, это подразумевается функцией привязки события, которую вы вызываете. Кроме того, с помощью функций привязки событий вы не получаете индекс как аргумент вашего обратного вызова, вместо этого вы получаете объект event
.
Однако в большинстве случаев вам на самом деле не нужен доступ к событию, поскольку this
привязан к элементу, который вызвал событие, как правило, то, что вам нужно, если только вы не делаете что-то действительно сложное.