寻找这个Jquery代码的更好/更优雅的解决方案

时间:2010-09-24 14:34:22

标签: javascript jquery

为了继续我优雅的解决方案系列,我试图找出如何以更好的方式做到这一点。

我在所有a标签中循环并尝试修改href。

此代码有效,但似乎很草率,并且很想知道如何更有效地执行此操作。

$('a').each(function(){
    x=$(this).attr('href').replace(/mls\_number/i,'interior=yes&mls_number');
    $(this).attr('href', x);
});

3 个答案:

答案 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);
}