为了继续我优雅的解决方案系列,我试图找出如何以更好的方式做到这一点。
我在所有a
标签中循环并尝试修改href。
此代码有效,但似乎很草率,并且很想知道如何更有效地执行此操作。
$('a').each(function(){
x=$(this).attr('href').replace(/mls\_number/i,'interior=yes&mls_number');
$(this).attr('href', x);
});
答案 0 :(得分:9)
您可以使用.attr()
函数重载,它允许您修改现有属性值:
$('a').attr('href', function(index, attr) {
return attr.replace(/mls\_number/i, 'interior=yes&mls_number');
});
答案 1 :(得分:1)
$('a').each(function(i, e) {
e.href = e.href.replace(/mls\_number/i,'interior=yes&mls_number');
});
或者只使用Mozilla JS扩展
Array.forEach(document.getElementsByTagName('a'), function(e) {
e.href = e.href.replace(/mls\_number/i,'interior=yes&mls_number');
});
答案 2 :(得分:1)
使用倒计时while循环的POJ缓存查询将是执行此操作的最快方法:
var elms = Array.prototype.slice.apply(document.getElementsByTagName("a")),
i = elms.length,
e,
href;
while (i--) {
e = elms[i];
href = e.href.replace(/mls\_number/i,'interior=yes&mls_number');
e.setAttribute("href", href);
}