Функция jQuery в .attr вызывается только один раз для всех совпадающих тегов - PullRequest
0 голосов
/ 08 октября 2009

Я учу себя jQuery, пишу игру памяти (где вы переворачиваете плитки более двух раз, ища совпадения).

У меня есть 16 тегов img, каждый из которых представляет одну из граней плитки. У меня есть массив из 16 имен файлов JPG. Я хочу установить для атрибута src каждого тега img случайный выбор из моего массива. Для этого я написал функцию, которая извлекает строку из массива, удаляет строку из массива и возвращает строку. Затем я использую эту функцию в обработчике onReady следующим образом:

$('.picture').attr( {src : extractArrayValue(cousinPictures)});

Кажется, это работает, за исключением того, что кажется, что функция extractArrayValue вызывается только один раз для всех 16 тегов. Все 16 тегов img получают одно и то же изображение, но если я обновлю страницу, они получат разные одинаковые 16 файлов изображений.

Правильно ли я понимаю, что происходит? И, если да, есть ли простой способ принудительно вызывать extractArrayValue для каждого устанавливаемого атрибута?

Ответы [ 2 ]

5 голосов
/ 08 октября 2009

Вам просто нужно перечислить картинки.

$('.picture').each(function() {
    this.src = extractArrayValue(cousinPictures); 
});

Если вы хотите понять, почему это изображение, перейдите по этой ссылке.

function.apply (this_context, arguments)

1 голос
/ 08 октября 2009

Вам может потребоваться запустить его через каждую функцию, возможно, предоставить больше вашего кода, но я думаю, что вам нужно:

$('.picture').each(function(){
    $(this).attr({src: extractArrayValue(cousinPictures)});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...