【问题标题】:Ajax selecting a portion of the DOMAjax 选择 DOM 的一部分
【发布时间】:2011-02-14 20:41:53
【问题描述】:

我正在尝试将生成的 html 文件的一部分加载到特定的 div 中。这个应该可以工作。什么都做不了。任何帮助表示赞赏。

$.ajax({ 网址:href, 数据类型:“html”, 成功:函数(数据){ $(loaddiv).html($(data).find(selectdiv)); } });

编辑:

我将完整的示例代码上传到 http://jsfiddle.net/BHruska/x7mzR/。

【问题讨论】:

  • 如果没有剩下的代码,就做不了那么多。你能设置一个测试用例@jsFiddle,包括html和其余的js吗?

标签: jquery ajax


【解决方案1】:

试试这个:

$(loaddiv).load(href + ' ' + selectdiv);

这应该只根据选择器加载 dom。这是 jquery 加载帮助页面中的一个更好的示例。

$('#result').load('ajax/test.html #container');

上面的 sn-p 将 id 为 '#container' 的元素内的 'ajax/test.html' 处的 html 加载到 '#result' 元素中。

希望这会有所帮助。

鲍勃

【讨论】:

  • 执行此操作时的警告:虽然当 complete 响应使用“.load()”加载到现有 DOM 时,jQuery 运行嵌入的 <script> 块,但它确实 不 当您按照此答案的建议提取部分响应时,不要这样做。我并不是说这是错误的;恰恰相反。这只是 jQuery 的一个奇怪之处,有时会导致问题。
  • 是的,我使用过 .load。我想要做的是获取 DIV 内部的内容,而不是 div 本身。如果没有这个,您最终会在生成的 HTML 文件中得到相同 DIV 的两个副本。我已经用一百万个选择器试图只获取 div 中的内容,但我无法得到任何有效的东西。
  • @Bth 要获得一个包含 DIV 中所有内容的 jQuery 集合,尝试正常选择,然后使用 .contents() 方法 - 它不仅捕获子 元素,还捕获textNode 孩子们。
【解决方案2】:

您需要将数据放入某个 DOM 元素中,然后在其中查找。数据不会在 DOM 中,因此 .find 将不起作用。

【讨论】:

  • 我把代码上传到jsfiddle.net/BHruska/x7mzR 需要保存到TestDivLoad.htm。
  • $("#someTempdiv").html($(data)); $(loaddiv).html($("#someTempdiv #"+ selecdiv).html()); $("#someTempdiv").html("");
【解决方案3】:

这行有问题:

$(loaddiv).html( $(data).find(selectdiv) );

.html() 方法需要一个 HTML 字符串输入,但 $(data).find(selectDiv) 发出一个 DOM 元素集合。[1]

不过,.append() 方法可能正是您要寻找的,因为它接受元素集合作为输入。所以,试试这个:

$(loaddiv)
    .empty()
    .append( $(data).find(selectdiv) );

[1] 当然,假设selectDiv 是一个选择器字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2016-04-20
    • 1970-01-01
    • 2014-08-28
    • 2021-09-30
    相关资源
    最近更新 更多