Прототип: соблюдаете 2 элемента и передаете разные параметры? - PullRequest
0 голосов
/ 21 марта 2012

CI имеет этот код:

for(var i = 0; i < toObserve.length; i++) {

    var elems = toObserve[i].split('###');
    var elementToObserve = elems[0];
    var imageToUse = elems[1];

    $(elementToObserve).observe('click', respondToClick);
}

function respondToClick(event) {

    var element = event.element();
} 

В функции responseToClick мне нужно отдельное изображение (imageToUse) для каждого elementToObserve.Как я могу это сделать?Могу ли я передать параметр или что-то еще?

Спасибо!

Добавление: Я попробовал то, что предложил Диодей, но кажется, что используется только последний переданный параметр, когда любойиз элементов, которые я наблюдаю, нажата.Что не так или как я хочу сделать это не правильно?

Ответы [ 3 ]

1 голос
/ 21 марта 2012

Использовать анонимную функцию:

$(elementToObserve).observe('click', function(event) {
    var yourVar = "moo";
    respondToClick(event,yourVar)
});
0 голосов
/ 19 декабря 2013

Я получил это для работы, просто присвоив мою переменную объекту элемента:

elementToObserve.imageToUse = imageToUse;

Тогда в функции наблюдателя:

function respondToClick(event) {
    var imageToUse = event.target.imageToUse;
}

Я не обнаружил никаких недостатков в этом.

0 голосов
/ 22 марта 2012

Используйте специализированные bindAsEventListener.

$(elementToObserve).observe('click',
    respondToClick.bindAsEventListener(imageToUse)
);

Связанные аргументы будут переданы после параметра event.

function respondToClick(event, imageToUse)
{
    var element = event.element();
    element.src = imageToUse;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...