在没有插件的情况下创建或更新查询字符串

时间:2013-03-01 11:39:06

标签: jquery

我想在点击按钮时更新菜单项的href,这是我的代码

function refreshReportMenu(){
    var ts = '&ts=' + new Date().getTime().string(16);
    $('ul.nav a.reps').each(function(){
       var href = $(this).attr('href');
        $(this).attr('href', href + ts);
    });
}

但问题在于它总是将ts附加到href,我想更新ts值,如果它已经在href中。

3 个答案:

答案 0 :(得分:0)

 $('ul.nav a.reps').each(function(){
       var href = $(this).attr('href');
        $(this).attr('href', href + ts);
    });

认为你错了$this而不是$(this)

答案 1 :(得分:0)

尝试.indexOf

alert('Index: ' + $(this).attr('href').indexOf('ts'));

检查

if($(this).attr('href').indexOf('ts') > 0)
{
    $(this).attr('href', href + ts);
}

答案 2 :(得分:0)

好吧..你也许可以尝试

var reg = /(^|&)ts=(.*?)(&|$)/, ts = 'ts=' + new Date().getTime().toString(16);
$('ul.nav a.reps').each(function(){
   var href = $(this).attr('href');
   if ( href.match(reg) ) {
       href = href.replace(reg,"$1+"+ts+"$3");
   } else {
       href += "&" + ts;
   }
   $(this).attr('href', href);
});

它应该工作:)