问题
I'm making an ajax get call that returns me contents of html page. I'm trying to select contents of the body
tag but my selector returns an empty jquery object.
$.get(filename, function(data) {
console.log($("body", data));
})
where data
is contents of html file.
回答1:
jQuery cannot select body
of the response string, because the <body>
tag disappears when the string is converted using $()
.
Hence, you have to select the body from the data
string in another way, such as Regular expressions. Example:
$.get(filename, function(data) {
var body = data.replace(/^[\S\s]*<body[^>]*?>/i, "")
.replace(/<\/body[\S\s]*$/i, "");
//Optionally, convert the string to a jQuery object:
body = $(body);
console.log(body);
}))
Note: My Regular Expression assumed a wellformed HTML document, where >
are correctly shown using HTML entities. If this is not the case, more advanced RegExps has to be used, such as the ones shown at this question.
回答2:
jQuery uses the document object model, not the "text" that makes up that model. You only have a big piece of text in the data element that hasn't been added to the document yet.
$(body).html(data);
... assuming the data contains valid body code. It it's an entire HTML page, then you'll need to parse it for just the body content, e.g. using indexOf or somesuch.
来源:https://stackoverflow.com/questions/7839889/trying-to-select-a-body-tag-from-html-that-is-returned-by-get-request