Вы можете выполнить вышеуказанное, используя закрытие. Функция .each принимает в качестве аргумента функцию с двумя аргументами, индексом и элементом.
Вы можете вызвать функцию, которая возвращает функция, которая принимает эти два аргумента, и хранить переменные там будут ссылаться, когда возвращается функция выполняется из-за поведения обзорного JavaScript.
Вот пример:
// closureFn returns a function object that .each will call for every object
someCollection.each(closureFn(someVariable));
function closureFn(s){
var storedVariable = s; // <-- storing the variable here
return function(index, element){ // This function gets called by the jQuery
// .each() function and can still access storedVariable
console.log(storedVariable); // <-- referencing it here
}
}
Из-за того, как работает JavaScript обзорное, то storedVariable будет референтным состоянием возвращенной функции. Вы можете использовать это для хранения переменных и доступа в любом обратном вызове.
У меня есть jsFiddle, который также подтверждает точку. Обратите внимание, что текст, выводимый на странице, отличается от HTML, определенного в области HTML. Посмотрите, как функция ссылается на сохраненную переменную и добавляет, что к тексту
http://jsfiddle.net/QDHEN/2/
Вот страница MDN для затворов для получения дополнительной справки https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures
нет ... нет –
нет других способов .. . –
http://stackoverflow.com/questions/5033861/pass-additional-parameters-to-jquery-each-callback – GVillani82