使用jQuery更改链接的href属性时,如何引用当前的href属性?

时间:2010-10-03 10:29:22

标签: jquery

我正在尝试更改页面上链接的href属性。我需要大部分网址保持不变,只需更改参数即可。到目前为止我已经有了这个:

$("a[href*='/new_note?']").attr('href', function() {
    return this.replace(/date1=[\d-]+/, "date1=" + $("[name='new_date1']").val());
});

但是我收到了这个错误:

this.replace is not a function

我做错了什么?谢谢你的阅读。

1 个答案:

答案 0 :(得分:3)

这是你传递给.attr()的函数的第二个参数,如下所示:

$("a[href*='/new_note?']").attr('href', function(i, oldHref) {
    return oldHref.replace(/date1=[\d-]+/, "date1=" + $("[name='new_date1']").val());
});

对于此功能:

  • this - 当前的DOM元素
  • i(第一个参数) - 集合
  • 中元素的索引
  • oldHref(第二个参数) - 属性的当前

这里的一个侧面建议,只是 [name='new_date1'] attribute-equals selector是非常昂贵的,如果您知道元素类型添加它以使其很多更快,例如:

$("input[name='new_date1']").val()

然后为了使它更快,在此.attr()函数(为每个元素运行)之前获取一次值,因此您只需获取该值一次,如下所示:

var newDate = $("input[name='new_date1']").val();
$("a[href*='/new_note?']").attr('href', function(i, oldHref) {
  return oldHref.replace(/date1=[\d-]+/, "date1=" + newDate);
});