【问题标题】:jQuery - Loop through div's extracting url from one link then adding it to another linkjQuery - 循环遍历 div 从一个链接中提取 url,然后将其添加到另一个链接
【发布时间】:2011-01-24 12:50:25
【问题描述】:

我需要创建一个函数,从一个链接获取 url 并将其应用于同一 div 中的另一个链接。我可以让它循环,但它总是将最后一个变量分配给所有链接。

代码如下:

$.fn.getLink = function() { 

    $('a.firstlink').each(function(){

         var linkHref= $(this).attr('href');

         ('a.secondlink').attr('href', linkHref)

    });

}

$('div.containing-links').each(function(){

    $(this).getLink();

});

帮助表示赞赏。

感谢您的快速回答,为了更简单,这里是正确添加链接的代码但将最后一个 href 变量重复到所有链接:

$('a.firstlink').each(function(){

var linkHref= $(this).attr('href');

$('a.secondlink').attr('href', linkHref);

    });

我怎样才能将它应用到一次?

【问题讨论】:

  • 您能否发布有问题的 HTML。很难达到你的目标。

标签: javascript jquery url loops


【解决方案1】:

您的问题是$('a.secondlink') 抓取了页面上的所有链接。仅仅因为它在每个循环内并不意味着它的范围是任何东西。

只需将$('a.secondlink').attr('href', linkHref) 更改为类似于$(this).siblings('a.secondlink').attr('href', linkHref);

【讨论】:

  • 这对我不起作用,但我认为您的想法是正确的,它将 href 应用于所有链接。当我提醒(linkHref);它成功地通过了每一个。
  • 忽略了这一点,这是正确的答案,尽管有更好的方法在特定上下文中进行搜索 $('a.firstLink', this) 您可以将元素搜索的上下文作为 jquery 选择器的第二个参数传递。跨度>
  • @Tom,这是一个不错的功能,但由于他循环的是链接,而不是容器,因此不一定可行。
  • @areid 我的示例可能不起作用,因为我不知道您的 DOM 结构,并且链接不是直接兄弟姐妹。概念保持不变,你只需要找出你想要的链接的正确遍历方法(而不是使用.siblings()方法。)
  • @Stephen 它是可行的,因为他正在替换由 div 容器 div.containing-links 包装的链接,他在该容器上调用 .each() 方法来替换每个包装器中的这些链接 - 检查我的在下面回答我已经在我相信他瞄准的结构上使用上下文来修复你的答案。
【解决方案2】:

我认为这不是编写插件的好地方。您应该在.each() loop 中直接进行操作。

$('div.containing-links').each(function(){
    var $self    = $(this),
        $first   = $self.find('a.firstlink'),
        $second  = $self.find('a.secondlink');

    if( $first.length && $second.length )
        $second[0].href = $first[0].href;
});

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 2020-05-30
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多