【问题标题】:jquery .load() page then parse htmljquery .load() 页面然后解析 html
【发布时间】:2010-10-04 15:19:00
【问题描述】:

我在我的应用程序中使用了以下行。但是现在我需要在显示之前解析加载的 html。获取某些 html 元素的最佳方式是什么。

$("#div").load("page.html");

谢谢

更新

现在我正在使用它,但无法获取 id 为“div”的 div 的 title 属性。

function get_title()
{
    $.get("test.html", function(data) {
        var data = $(data);
        var title = $("#div", data).attr("title");

        alert(title);
    });
}

var 数据中的 html 如下所示。

<div id="div" title="title example">
<p>
    Content
</p>
<p>
    Content
</p>
</div>

再次感谢

【问题讨论】:

  • 为什么需要解析 HTML?如果您只希望部分加载的代码出现在页面上,请在 URL 参数中使用选择器。

标签: jquery load


【解决方案1】:

您可以使用$.get() 的半等效扩展版本,如下所示:

$.get("page.html", function(data) {
  var data = $(data);
  //do something
  $("#div").html(data);
});

请注意,在这种情况下调用 .html(data) 只是 a shortcut for .empty().append(data)


或者,如果可以选择后处理,只需使用 .load() 回调,如下所示:

$("#div").load("page.html", function() {
  $(this).find(".class").remove(); //just an example
});

【讨论】:

  • @Nick Craver 我使用了 get 方法,但无法获取名为“title”的 div 的标题。我该怎么做。谢谢
  • @moo - 你的意思是“命名”? &lt;div&gt; 标签是什么样的?
  • @Nick Craver 我已经更新了我的第一篇文章。 id 是
    的“div”
  • @moo - 要获得属性,您需要搜索响应,因为它还没有在主文档中,例如:$("#div", data).attr("title");
  • @Nick Craver 谢谢。好的,我已添加它并将该值放入警报中以进行测试,但我在其中未定义:/
【解决方案2】:

您应该调用$.get 来执行AJAX 请求并手动处理响应,而不是调用.load()

【讨论】:

    【解决方案3】:
    jQuery.ajax({
        url:'your_url',
        type:'get',
        dataType:'html',
        success:function(data)
       { 
           var _html= jQuery(data);
           //do some thing with html eg: _html.find('div').addClass('red')
           jQuery('#target').html(_html);
       }
    });
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签