3

我正在尝试通过 jquery 创建一些动态 html,将其过滤到我感兴趣的部分,并将该部分 html 附加到页面上的现有元素但它不起作用。我在这个小提琴中做错了什么?

http://jsfiddle.net/3zKeL/4/

HTML:

<div id="output">This is the output:<br></div>

问:

var response = "<html><body><h1>hello</h1></body></html>";
$(response).filter("body").appendTo("#output");
4

2 回答 2

3
$(response)
          .filter(function() { 
             return $("body");
          })
          .appendTo("#output");

演示

你也可以这样做

$('<div/>')           // add response to fake div
    .append(response)  
    .find('body')     // find your target
    .appendTo('#output'); // append the target

演示

于 2012-06-02T18:42:40.590 回答
0

好的,想通了。jQuery 在动态生成的 html 中遇到“html”和“body”标签时会默默地呕吐。我只需要更换或剥离这些标签,现在它可以按预期工作。

http://jsfiddle.net/pqyeM/13/

var response = "<html><head><title>test</title><style>body{font-size:.9em;}</style></head><body bgcolor=\"white\"><h1>hello</h1></body></html>";

// we have to remove/replace certain tags or jquery will vomit with unexpected results
var modifiedResponse = response.replace("<html>", "").replace("</html>", "").replace("<body", "<div id='content'").replace("</body>", "</div>");

var wrappedSet = $(modifiedResponse);

wrappedSet.filter("div[id='content']").appendTo("#output");
于 2012-06-02T22:13:59.923 回答