【问题标题】:Getting all of links from page after load content with jquery load();使用 jquery load() 加载内容后从页面获取所有链接;
【发布时间】:2010-05-23 13:39:14
【问题描述】:

将内容加载到页面后使用

div.load('page.php');

我需要从页面获取所有链接来更改它们。所以我写了这个:

div.load('page.php', function() {
    links = $('a');
    alert(links.length);

    for(i=0 ; i<links.length ; i++
    {
        link = $('a:nth-child('+(i+1)+')');
        alert(link.attr('href'));
    }
});

这段代码的结果是: - 第一个 alert() 返回正确的链接数量,但它不是 DOM 对象,所以我无法使用它更改 href 属性:links[i].attr('href', 'changed') 我必须一个一个地循环获取链接,但是这个方法只返回 page.php 的第一个链接和站点的所有链接,这些链接不会改变。

有人知道怎么做吗?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    你可以这样做:

    div.load('page.php', function() {
        $('a').each(function(index){
          alert($(this).attr('href'));
        });
    });
    

    您可以更改他们的href 喜欢:

    div.load('page.php', function() {
        $('a').each(function(index){
          $(this).attr('href', 'whatever');
        });
    });
    

    【讨论】:

      【解决方案2】:

      如果只需要修改已加载内容中的所有链接,请使用a context,如下所示:

      div.load('page.php', function(data) {
        $('a', data).attr('href', '#');
      });
      //or, if they're interdependently changed, something like this...
      div.load('page.php', function(data) {
        $('a', data).attr('href', function(i, href) {
          return href + "?tracking=1"; //append ?tracking=1
        });
      });
      

      这会找到所有&lt;a&gt;,但仅在返回的page.php 的响应中,所以只有您刚刚加载的锚点。格式是$(selector, context),如果你关闭context,它就是document,所以像$('a')这样的东西真的 $(document).find('a'),给它一个不是document的上下文,你'说$(data).find('a'),只获取你想要的链接。

      【讨论】:

        猜你喜欢
        • 2019-07-05
        • 1970-01-01
        • 2018-03-06
        • 1970-01-01
        • 1970-01-01
        • 2020-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多