可能的JQuery类选择器错误

Mag*_*pie 5 javascript jquery jquery-selectors

我有一个返回HTML片段的ajax调用.我试图在渲染之前选择该片段中的div.

HTML的一个例子:

<div class="event-detail repBy-container">
    <div class="copy">.....</div>
    <div class="links">
       ....
    </div>
    <div class="contacts">
      <div class="name-brand">....</div><div class="details">...., <a href="mailto:...@....">...</a></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在的问题是:

function ajaxReturn(data) {
   alert($(data).find('.event-detail').length); <-- Returns 0
   alert($(data).find('.copy').length); <-- Returns 1
}
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我做错了什么?

che*_*vim 5

这是预期的行为.

  • 你.event-detail在你的div下搜索,没有.
  • 你.copy在你的div下搜索,有一个.


Nic*_*ver 5

.find()只获取后代,而不是当前级别,你需要.filter()从当前集合中获取项目(这是你返回的根目录),如下所示:

function ajaxReturn(data) {
   alert($(data).filter('.event-detail').length); //<-- Returns 1
   alert($(data).find('.copy').length); //<-- Returns 1
}
Run Code Online (Sandbox Code Playgroud)

如果要.find()在两种情况下都工作,请将内容添加到父容器,如下所示:

function ajaxReturn(data) {
   var parent = $("<div />").append(data);
   alert(parent.filter('.event-detail').length); //<-- Returns 1
   alert(parent.find('.copy').length); //<-- Returns 1
}
Run Code Online (Sandbox Code Playgroud)