将属性值从一个属性复制到另一个属性中的内部字符串

时间:2011-09-01 18:51:03

标签: javascript jquery attributes

我有一个<A>标记,我需要将HREF属性的值复制到REL属性中的内部字符串。具体来说:

<a href="XX-some-link-XX" class="cloud-zoom-gallery small" 
rel="useZoom: 'zoom1', smallimage: 'XX-this-is-where-i-want-to-copy-that-link-XX'">
<img />
</a>

通过执行以下操作,我已经能够部分实现这一目标:

jQuery(document).ready(function() {
jQuery(".small").each(function() {
    var src = jQuery(this).attr('href');
    var a = jQuery(this).attr('rel', src);
});
});

但这会删除REL属性中的其他数据(例如useZoom)。

所以我的问题是 - 如何复制attr值并将其粘贴到另一个属性值的特定位置?

4 个答案:

答案 0 :(得分:1)

太糟糕了,rel不是格式正确的JSON对象,或者您可以使用JSON.parse()来完成工作。

这可能很麻烦,但它很普遍。

$(function() {
    var $jq = $("a:eq(0)");
    var j = relParser($jq.attr("rel"));
    j["smallimage"] = $jq.attr("href");
    $jq.attr("rel",relBuilder(j));
    alert(relBuilder(j));
})

function relBuilder(obj) {
    var arr = [];
    for (attr in obj) {
        arr.push(attr+": '"+obj[attr]+"'");
    }
    return arr.join(", ");
}
function relParser(str) {
    var arr = str.split(",");
    var obj = {}; 
    for (var i=0; i<arr.length; i++) {
        var tmp = arr[i].split(":");
        obj[tmp[0].trim()] = tmp[1].trim();
    }
    return obj;
}
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

答案 1 :(得分:0)

这是最后附加的示例:

jQuery(document).ready(function() {
   jQuery(".small").each(function() {
       var $this = $(this);
       $this.attr('rel', $this.attr('rel') + " " + $this.attr('src'));
   });
});

如果您需要更具体 - 您需要根据需要格式化值。就像javascript中的简单字符串一样。

在放入rel属性之前,请随意将属性值作为字符串进行修改。

答案 2 :(得分:0)

Samich所说的是这样的事情(我不会测试,但可能有效):

jQuery(document).ready(function() {
    jQuery(".small").each(function() {
        var src = jQuery(this).attr('href');
        var rel = jQuery(this).attr('rel');
        result = rel + src;
        var a = jQuery(this).attr('rel', result);
    });
});

答案 3 :(得分:0)

如果您尚未在smallimage:中添加a作为属性,则可以执行此操作

<强> HTML

<a href="XX-some-link-XX" class="cloud-zoom-gallery small" 
rel="useZoom: 'zoom1'">
<img />
</a>

<强> JS

$('.small').each(function(){
    var a = $(this).attr('href');
    var rel = $(this).attr('rel'); 
    $(this).attr("rel", rel + ", smallimage: '" + a + "'");
});

示例:http://jsfiddle.net/jasongennaro/a9BRz/

您需要在结果面板上使用检查元素来查看其工作原理