Ajax响应使用查找查找HTML片段

我正在用JQuery查找一些测试,我有一个来自AJAX请求的html响应,所以最初的结果就是这个。

   

Hi

在我的Ajax成功代码是这个..

 success : function(response,status) { console.log( $(response).find('#dashboard').html() ); } 

在控制台上打印它,给我一个undefined

但是当我修改响应页面(我创建了一个嵌套div)时

    

Hi

我的Ajax Success代码中的行返回了console.log( $(response).find('#dashboard').html() ); 归还了

 

Hi

我的问题,在执行console.log( $(response).find('#dashboard').html() );时,第一个HTML是怎么console.log( $(response).find('#dashboard').html() ); 它给了我一个未定义的,但是在第二个HTML(嵌套在div中的那个)给了我#dashboard的内容(我希望得到的那个)。

据我所知,这是一种依赖浏览器的行为,标签作为衡量卫生的标准,例如

执行时未找到#dashboard的原因

 $(response).find('#dashboard') 

很可能是因为#dashboard已成为卫生设施之后的根元素,而.find()与不在根本身上的后代元素匹配。

我通常要避免这个问题,而不是空的

 $("
").html(response).find('#dashboard')

除了正文的内容之外,jQuery会#dashboard所有内容,因此#dashboard位于顶层,因此find实际上会搜索#dashboard后代。 由于#dashboard位于顶层,因此您可以使用filter从其他顶级节点中选择它。

http://jsfiddle.net/mowglisanu/SqL9Q/