Prototype - функция внутри each () - возвращает только последнее значение - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь загрузить изображение из каждого эскиза и добавить Opentip (opentip.org).

Я успешно добавил тег и создал всплывающую подсказку.Единственная проблема заключается в том, что отображается только последнее значение в массиве - для каждого эскиза.

Вот ссылка на один продукт: http://www.inusual.com.br/poltrona-evo.html

Исходный HTML-код

    <div class="ca-thumbnails">
    <div>
        <img src="xxx">
    </div>
    <div>
        <img src="xxx">
    </div>
</div>

Я добавил случайно.Все отлично работает и правильно добавляется к каждому img.Только изображение не отображается нормально.

var tip = $$('.ca-thumbnails div img');
tip.each(function(s, index) {

   src = s.readAttribute('src');
   function image() {

    return Builder.node('img', { 'src': src });
   }

    s.wrap('a', { 'class': 'tip', 'onclick':'return false;', 'href': src});
    s.up(0).addTip(image, { ajax: false, showEffect: 'appear', showon:'mouseover', className:'glass', containInViewport: true, target: true, stem: true, tipJoint: [ 'center', 'bottom' ], targetJoint: [ 'center', 'top' ] });

Я полагаю, что функция image () получает только последний элемент.

Кто-нибудь знает, что это?Извините за мой английский.

Спасибо

1 Ответ

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

Функция image не вызывается, когда вы ожидаете. Я не уверен на 100%, почему это не ошибка, но вместо того, чтобы передать элемент в addTip, вы передаете ссылку на функцию (image). Попробуйте это, чтобы увидеть, если это решит проблему:

var tip = $$('.ca-thumbnails div img');
tip.each(function(s, index) {

    var src = s.readAttribute('src');
    var image = new Element('img', {src: src});

    s.wrap('a', { 'class': 'tip', 'onclick':'return false;', 'href': src});
    s.up(0).addTip(image, { ajax: false, showEffect: 'appear',  showon:'mouseover', className:'glass', containInViewport: true, target: true, stem: true,   tipJoint: [ 'center', 'bottom' ], targetJoint: [ 'center', 'top' ] });
});

Не забудьте использовать ключевое слово var! Я вижу, что у вас есть глобальная переменная image, которая может (или не может) иметь какое-то отношение к тому, почему эти конкретные строки кода не дают ошибок и дают вам подсказку о том, что не так.

...