Добавить в корзинуПозвонить
Найти в Дзене
Q-ANSWER

Передайте дополнительные параметры в jQuery каждый() обратный вызов

Я работаю над приложением, которое будет представлять опросы пользователю. Разметка выглядит примерно так: <body>
<div class="question" id="q1">
Question 1
</div>
<div class="question" id="q2">
Question 2
</div>
<!-- etc -->
</body>
Я хочу построить объекты JavaScript из DOM с помощью jQuery, поэтому в конструкторе Survey я просматриваю набор jQuery, используя метод each(). Проблема в том, что в функции обратного вызова я не могу получить ссылку на объект Survey, чтобы добавить каждый объект Question к массиву Survey.questions. Как получить ссылку на объект Survey? Есть ли способ передать дополнительный параметр (например, ссылку на объект Survey) на функцию обратного вызова? function Survey() {
this.questions = new Array;
$('.question').each(function(i) { (/* Survey object */).questions.push(new Question(this)); });
}
function Question(element) {
this.element = $(element);
} Ответ № 1 Вы должны иметь возможность создать ссылку на с

Я работаю над приложением, которое будет представлять опросы пользователю. Разметка выглядит примерно так:

<body>
<div class="question" id="q1">
Question 1
</div>
<div class="question" id="q2">
Question 2
</div>
<!-- etc -->
</body>

Я хочу построить объекты JavaScript из DOM с помощью jQuery, поэтому в конструкторе Survey я просматриваю набор jQuery, используя метод each(). Проблема в том, что в функции обратного вызова я не могу получить ссылку на объект Survey, чтобы добавить каждый объект Question к массиву Survey.questions. Как получить ссылку на объект Survey? Есть ли способ передать дополнительный параметр (например, ссылку на объект Survey) на функцию обратного вызова?

function Survey() {
this.questions = new Array;
$('.question').each(function(i) { (/* Survey object */).questions.push(new Question(this)); });
}

function Question(element) {
this.element = $(element);
}

Ответ № 1

Вы должны иметь возможность создать ссылку на свое опрос, прежде чем перебирать вопросы.

function Survey() {
this.questions = new Array();
var survey = this;
$('.question').each(function(i) {
survey.questions.push(new Question(this));
});
}

function Question(element) {
this.element = $(element);
}

var survey = new Survey();

$.each(survey.questions, function() {
$("ul").append("<li>" + this.element.text() + "</li>");
});

Источник http://q-answer.ru/questions/peredayte-dopolnitel-nye-parametry-v-jquery-kazhdyy-obratnyy-17580.html