-2

我有四个指向四个页面的链接

<a href="asdf">asdf</a>
<a href="asdfer">1244</a>
<a href="iuiuy">qwer</a>
<a href="asdfasdf">asdfqew</a>

我只想根据当前页面 url 参数将当前 url 中的数字添加到下一个元素的 href

(即)如果我在“asdf”页面,那么其他三个链接需要添加总和数

 <a href="asdf">asdf</a>
<a href="asdfer/123">1244</a>
<a href="iuiuy/123">qwer</a>
<a href="asdfasdf/123">asdfqew</a>

这是我使用的代码

 var pathname = window.location.pathname;
var split = pathname.split("/")[4];
 console.log(jQuery("#pagetabs li a").each().next().attr('href')); 
if(split.match(/^\d+$/)){
  jQuery("#pagetabs li a").each(function(){
      href = jQuery(this).attr('href');
      newhref = href+'/'+ split;  
       jQuery(this).next().attr('href',newhref); 
  });

}

但这是我得到的错误

TypeError: a is undefined
http://example.com/misc/jquery.js?4
Line 12

我的代码有什么问题吗

4

2 回答 2

0

我认为 .each 方法会通过您的所有链接。但是一旦它到达最后一个,你说 .next() 意思是“转到下一个链接”。而且没有链接了。因此,我建议使用 for 循环而不是每个:

var pathname = window.location.pathname;
var split = pathname.split("/")[4]; // number from current url 
if(split.match(/^\d+$/)){
    var links = jQuery("#pagetabs li a");
    for(var i=1; i<links.length; i++) {
        var link = links.eq(i);
        link.attr("href", link.attr("href") + "/" + split);
    }
}
于 2013-08-28T13:05:29.323 回答
0

演示

var split = 1563; // number from current url 
if(split){
  $("#pagetabs li a").each(function(index){
      var $this=$(this); 
      if(index!=0)
      $(this).attr('href',$this.attr('href')+'/'+ split)
    });

}
于 2013-08-28T13:07:14.350 回答