如何在不对HTML进行硬编码的情况下向元素添加属性?

时间:2014-08-22 14:54:18

标签: javascript jquery html dom

因此,在我的具体情况下,我尝试让特定<a>中的所有div元素都具有属性target = "_blank",以便在新标签中打开它们。

但这可以适用于任何元素和任何属性。我只是想知道是否有办法用Javascript添加这些属性。

我的第一个想法是使用CSS,但后来我意识到这不是样式问题。

7 个答案:

答案 0 :(得分:3)

在这种情况下,我不建议使用target="_blank"。但您可以在链接上捕获click事件:

var links = document.getElementById('mydiv').getElementsByTagName('a');

for(var i = 0, len = links.length; i < len; i++) {
    links[i].onclick = function(e) {
        e.preventDefault();
        window.location = this.getAttribute("href");
    }
}

jQuery

$('#mydiv a').click(function(){
    window.location = $(this).attr('href');
    return false;
});

答案 1 :(得分:2)

尝试myElement.setAttribute("yourattribute", "yourvalue");

答案 2 :(得分:2)

正如workabyte指出的那样,这可能是jQuery的工作......

$("#divId a").attr("target", "_blank");

答案 3 :(得分:2)

如果您使用jQuery,那么如果有某种方法可以选择相关的div,那么您可以在加载时执行此操作。

$(function(){
    $('#divId').find('a').attr('atribute name','value for atribute');
});

答案 4 :(得分:1)

$('#divId').children('a').attr('attrName','attrVal');

答案 5 :(得分:1)

document.getElementsByTagName('a')或类似方式获取元素并使用setAttribute函数。

但如果你想在任何地方都有这种行为,我建议你在html中设置它。

答案 6 :(得分:1)

以下是纯javascript中的一个小例子:

<div id="myDiv">
   <a href="http://google.com">Google</a>
   <a href="http://facebook.com">Facebook</a>
</div>
<button onclick="setLinksTarget()">Set target</button>

<script type="text/javascript">
function setLinksTarget(){
    var div = document.getElementById('myDiv'),
        links = div.getElementsByTagName('a'),
        i;

    for(i = 0; i < links.length; i+=1){
        links[i].setAttribute('target', '_blank');
    }
}
</script>

请注意,IE8及以下版本不支持setAttribute(根据http://www.w3schools.com/jsref/met_element_setattribute.asp

您也可以使用jquery来完成这项工作,然后它就是一个班轮:

function setLinksTarget(){
    $('#myDiv a').attr('target','_blank');
}