将属性值从一个属性复制到另一个属性中的内部字符串
Copy an atrribute value from one attribute to an inner string within the other
我有一个<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值,并粘贴在另一个属性的值一个特定的刺?
可惜您的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,"");
}
下面是在末尾添加的示例:
jQuery(document).ready(function() {
jQuery(".small").each(function() {
var $this = $(this);
$this.attr('rel', $this.attr('rel') + " " + $this.attr('src'));
});
});
如果您需要更具体-您需要根据需要格式化值。就像javascript中的简单字符串。
可以随意将属性值作为字符串获取,并在放入rel
属性之前对其进行修改。
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);
});
});
如果您还没有在a
s中添加smallimage:
作为属性,您可以这样做