在HTML字符串中查找元素

Mic*_*l Z 19 jquery dom

我想我有

var testHTML = "<div id='demo_div'></div>";
Run Code Online (Sandbox Code Playgroud)

我希望得到高于div作为JQuery对象来操纵它.我尝试找到它:

 var found = $(testHTML).find("#demo_div");
Run Code Online (Sandbox Code Playgroud)

与:

 var found = $(testHTML).find("div");
Run Code Online (Sandbox Code Playgroud)

两个都没有运气.我有空的找到的变量.我做错了什么?

PS是的,我知道我可以直接进入我的div

$("#demo_div") 
Run Code Online (Sandbox Code Playgroud)

但是在我的情况下我不能这样做 - 我需要从普通的HTML中获取它,这将被分配给某个变量,就像我在testHTML var中的例子一样.

更新: 即使我没有像这里的根div元素:

var testHTML = "<html><div id='demo_div'></div></html>";
Run Code Online (Sandbox Code Playgroud)

我不能使用find来导航div元素.

Jam*_*ice 49

问题是你div是集合中的根元素,所以你需要使用.filter()而不是.find()(只查看后代元素):

var found = $(testHTML).filter("#demo_div");
Run Code Online (Sandbox Code Playgroud)

我假设您的实际HTML字符串比问题中的字符串更复杂,否则您不需要做任何其他事情,$(testHTML)并且您将拥有包含该单个元素的jQuery对象.

  • @MichaelZ - 然后你的问题很可能在其他地方.如果您要查找的元素位于集合的根目录,请使用`.filter()`,如果不是,请使用`.find()`.见[本例](http://jsfiddle.net/jamesallardice/CWnvu/1/). (3认同)
  • @MichaelZ - jQuery删除了`<html>`元素,所以你的`div`实际上就是root. (2认同)