【问题标题】:AJAX Load div ID's childrenAJAX 加载 div ID 的孩子
【发布时间】:2011-05-31 05:37:33
【问题描述】:

假设我有这个:

$('a').each(function() {
    $(this).click(function(e) {
        e.preventDefault();
        var href = $(this).attr('href');
        $('#somediv').load(href + ' #foo');
    });
});

现在我如何让它加载 #foo 的内部内容而不是实际的 div #foo

还是不太明白我的意思?

<div id="foo">
    <!-- Load these divs only -->
    <div class="children">bar</div>
    <div class="children">bar</div>
    <div class="children">bar</div>
    <div class="children">bar</div>
    <div class="children">bar</div>
    <!-- // -->
</div>

我只想加载 div 的内部内容。非常感谢任何帮助!

编辑:已解决

我使用了 unwrap 方法:

parent.load(href + ' #' + ident + '', function() {
    $('#'+ident+' > div').children().unwrap();
});

【问题讨论】:

    标签: javascript jquery ajax load


    【解决方案1】:

    如果您不介意使用 $.get 并手动执行加载部件,您可以相当轻松地完成此操作,如下所示:

    $.get(href, function(html) {
        $('#somediv').html(
            $(html).find('#foo').html()
        );
    });
    

    这会使用$.gethref获取完整的HTML块,然后,在成功回调中,我们在整堆HTML中找到id="foo"元素,使用.html()提取其内容,然后复制使用.html()的mutator形式将东西放入#somediv

    如果您知道 #foo 将只包含 &lt;div&gt; 孩子,那么您可以试试这个:

    $('#somediv').load(href + ' #foo > div');
    

    我不确定这是否可行,并且我没有设置一个像样的测试用例,但.load documentation 表明它应该可以工作。如果#foo 不只包含&lt;div&gt;s,那么您将不得不想出与child selector (&gt;) 一起使用的其他东西。当然,如果#foo 包含未包含在元素中的文本,那么我认为您会被上述$.get 方法所困扰。

    【讨论】:

    • @tfbox:很酷,谢谢。你能检查一下子选择器是否适用于.load?不过,$.get 方法可能更安全,也更适合未来。
    • 我没有测试过,但我想不出任何原因。
    【解决方案2】:

    您可以使用 &gt; 选择器后跟星号来仅加载锚点的子项:

    $('#somediv').load(href + ' #foo > *');
    

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      $(this).click(function(e) {
          e.preventDefault();
          var href = $(this).attr('href');
          $('#somediv').load(href + '#foo *',
          function() {
              $('#somediv #foo').remove();
          });
      });
      

      【讨论】:

      • 但是* 会下降到整个子树(请参阅jsfiddle.net/ambiguous/SdC5n/1),而不是只有一个级别,这样可能会造成一些混乱,它也不会捕获顶级文本节点。
      • @mu 太短 感谢您的建设性建议。我是一个初学者,所以我需要了解更多,这种建议现在和将来总是会出现。再次感谢。继续帮助..请
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 2010-12-04
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多