我正在尝试更改页面上链接的href属性。我需要大部分网址保持不变,只需更改参数即可。到目前为止我已经有了这个:
$("a[href*='/new_note?']").attr('href', function() {
return this.replace(/date1=[\d-]+/, "date1=" + $("[name='new_date1']").val());
});
但是我收到了这个错误:
this.replace is not a function
我做错了什么?谢谢你的阅读。
答案 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);
});