如何使用jQuery应用于所有href attr

时间:2013-12-20 13:11:41

标签: javascript jquery html

我如何将attr应用于我页面上的所有href。 例如: 我有:

<ul>
    <li><a href="mylink1">mytext1</a></li>
    <li><a href="mylink2">mytext2</a></li>
    <li><a href="mylink3">mytext3</a></li>
</ul>

我需要:

<ul>
    <li><a href="javascript:myFunc(mylink1)">mytext1</a></li>
    <li><a href="javascript:myFunc(mylink2)">mytext2</a></li>
    <li><a href="javascript:myFunc(mylink3)">mytext3</a></li>
</ul>

我需要这样做而不添加新的id,类等。使用Js和jQuery。请帮忙! :)

7 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

$("ul li a").each(function(i, a) {
    a = $(a);
    a.attr('href', 'javascript:myFunc("' + a.attr('href') + '")');
});

Demonstration

注意:这仅适用于ul列表中的链接。要应用于整个页面中的所有a代码,请改用$("a")...

此外,如果href属性包含"\等特定字符,则此方法可能会失败。如果这是可能的话,那就更安全一点了:

$("ul li a").each(function(i, a) {
    a = $(a);
    a.attr('href', 'javascript:myFunc(' + JSON.stringify(a.attr('href')) + ')');
});

答案 1 :(得分:1)

您可以尝试

$('a').each(function () {
    var att = $(this).attr('href');
    $(this).attr("href", "javascript:myFunc(" + att + ")");
});

答案 2 :(得分:1)

使用jQuery:

$("a[href^='mylink']").on('click', function(e) {
    e.preventDefault();
   myFunc($(this).attr("href"));
});

答案 3 :(得分:1)

这应该做你需要的:

$("a").each( function() {
  var url = $(this).attr('href');
  $(this).attr('href', 'javascript:myFunc("'+url+'")');
});

答案 4 :(得分:1)

而不是修改href在实际Javascript中分配事件处理程序:

$("[href]").click(function(e){
    e.preventDefault();
    myFunc(this.href);
});

function myFunc(value){
   alert(value);
}

JS小提琴: http://jsfiddle.net/Rs9RH/

答案 5 :(得分:0)

试试这个:

$('li a').each(function(){
$(this).attr('href',"javascript:myFunc("+$(this).attr('href')+")");
})

<强> WORKING FIDDLE

答案 6 :(得分:0)

我认为这可行:

$("a[href^='mylink']").each(function () {
  var url = $(this).attr('href');
  $(this).attr("href", 'javascript:myFunc("'+url+'")')
})