原型 - 每个()内的函数 - 只返回最后一个值

时间:2012-03-19 20:13:45

标签: function prototypejs each

我正在尝试从每个缩略图加载图像并添加一个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 个答案:

答案 0 :(得分:1)

当您期待时,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变量,它可能(或可能不)与为什么这些特定的代码行没有错误并为你提供错误的线索有关。