在收到回复之后,在load()
函数的jQuery源代码中看到:
self.html( selector ?
// If a selector was specified, locate the right elements in a dummy div
// Exclude scripts to avoid IE 'Permission Denied' errors
jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
// Otherwise use the full result
responseText );
“在虚拟div中找到正确的元素”是什么意思?为什么需要一个虚拟div?
答案 0 :(得分:2)
它不是ajax代码的一部分,而是load()
方法的一部分,它允许加载响应内容的片段。
创建temp元素,以便在查询片段时,如果它是最顶层的元素,那么也会获取它,否则find()
方法将排除根元素。然后,您需要使用filter
/ find()
的组合来完成此操作。
例如:如果回复为<div class="result">....</div>
且选择器为.result
,那么如果我们使用$(responseText ).find(selector)
,则会失败,因为result
不是元素的后代,但是根,所以只需将响应作为临时元素的后代添加为html为<div><div class="result">....</div></div>
,现在只需使用find('.result')
就可以返回正确的元素。
答案 1 :(得分:2)
如果response
位于xmlstring/htmlstring
并且您可以直接在其中找到元素,则必须执行此操作。
见,
jQuery("<div>")
.append(jQuery.parseHTML(responseText))
.find( selector )
逐行采取:
xml/html
数据。.append()
将xml
数据作为带有jQuery.parseHTML()
方法的有效html。