【问题标题】:How do I pull the value of an attribute as it's being cached in JavaScript?如何在 JavaScript 中缓存属性的值?
【发布时间】:2011-01-26 23:28:30
【问题描述】:

我正在尝试传递srcrel 标记值。这是示例输入。

<img class="image" src="example.jpg" title="" rel="value" />

以下是解析页面上所有&lt;img&gt; 标记的一些代码。

add: function(src, rel) {
    if (this.cache[src]) {
        return this.cache[src];
    }
        if (this.cache[rel]) {
            return this.cache[rel];
        }
    var image = new Image();
    image.src = src;
        image.rel = rel;
    this.setStyle(image, {display: 'block'});
    if (image.complete && image.width) {
        return image;
    }
    image.onload = (function(scope) {
        return function() {
            scope.cache[src] = image;
        };
    })(this);
        jQuery(image).attr('rel', function() { image.rel } );
    return image;
},

但是,这是我的输出。

<img src="example.jpg" style="display: block;" />

就好像它完全忽略了rel 标签。我需要将rel 标签值从旧的&lt;img&gt; 传递给新的&lt;img&gt;

【问题讨论】:

  • 唯一重要的一行是jQuery(image).attr('rel', function() { image.rel } );,它正在添加属性值,但我无法让它通过):
  • 直接设置会发生什么,像这样:jQuery(image).attr('rel', image.rel);
  • @Jacob - 结果相同,没有传递 rel 值

标签: javascript galleria


【解决方案1】:

代码正在设置属性。不确定,但如果 rel 属性没有映射到属性,它就不会显示。

jQuery 还稍微混淆了属性和属性之间的区别,所以我不确定它如何处理 rel

设置rel 时,添加setAttribute() 调用。

var image = new Image();
image.src = src;
image.rel = rel;
image.setAttribute('rel',rel);

您的原始代码确实会设置 rel 属性,但不会设置属性。这实际上会设置属性。

你应该可以摆脱这条线:

jQuery(image).attr('rel', function() { return image.rel } );

编辑:

这是一个替代解决方案:

看来如果你先设置image.rel = rel;,那么jQuery就没有效果了。去掉那一行,jQuery 代码就可以工作了。

【讨论】:

  • 这是我尝试过的第一段代码,它实际上在&lt;img&gt; 中返回。但是,它是“未定义的”。
  • @dmanexe:你什么意思?你试过setAttribute()吗?
  • @patrick 是的,我试过了。这是我对您的建议的看法 - pastebin.com/xP1iA7J3
  • @dmanexe:该代码对我有用。 rel 属性出现在新图像上。
  • 当我尝试你在编辑下讨论的工作时,rel 标签又消失了。我得到的壁橱是setAttribute()
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 2019-04-02
  • 2020-04-27
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2016-09-24
  • 2021-03-24
相关资源
最近更新 更多