jQuery - 将属性添加到另一个属性中?

时间:2014-03-01 11:39:44

标签: javascript jquery html css

好的 - 所以这可能非常简单,但我对HTML和CSS之外的任何事情都很陌生,所以我觉得是时候问了:)

所以我想做的是从新属性中获取内容并将其添加到href属性。

我有什么:

<div id="testDiv">
    <a href="" newAttr="12345">LINK</a>
</div>

$('#testDiv a').attr('href',newAttr+'.extension');

我想要的结果是:

<div id="testDiv">
    <a href="12345.extension" newAttr="12345">LINK</a>
</div>

我是否遗漏了一些非常明显的东西,或者我在几英里之外?

任何帮助都会很棒!

谢谢, 尼克

*编辑 - 我在这篇文章中错过了一个等号,而不是我的实际代码 - 菜鸟:)

3 个答案:

答案 0 :(得分:3)

您还可以使用attr()获取属性的值:

$('#testDiv a').attr('href', function (i, attr) {
    return $(this).attr('newAttr') + '.extension'
});

顺便说一句,你在HTML标记中遗漏了=

<a href="12345.extension" newAttr="12345">LINK</a>
// ----------------------------- ^ here  

<强> Fiddle Demo


编辑:i是您的锚点在div中的锚点集合中的索引位置,标识为testDiv,所以在您的情况下它将是0,因为那里只有一个锚点。在这种情况下,i不是强制性的,因为您根本不需要使用它。

另一方面,attr将返回您锚点的旧href值。这里也不需要这个,因为您需要newAttr的值而不是href值,所以实际上您可以将它们都留空:

$('#testDiv a').attr('href', function () {
    return $(this).attr('newAttr') + '.extension'
});    

答案 1 :(得分:2)

您需要使用attribute setter which takes a function as a handler callback

的变体
$('#testDiv a').attr('href', function (i, attr) {
    return $(this).attr('newAttr') + '.extension'
});

演示:Fiddle

答案 2 :(得分:0)

你不是只是错过了newAttr的等号吗?

<div id="testDiv">
    <a href="12345.extension" newAttr"12345">LINK</a>
</div>

应该是

<div id="testDiv">
    <a href="12345.extension" newAttr="12345">LINK</a>
</div>