Javascript jQuery中返回HTML字符串的错误

Javascript jQuery中返回HTML字符串的错误,javascript,jquery,Javascript,Jquery,这里的代码在大部分情况下工作得非常好this.content是来自JSON的HTML字符串 $(this.content).find('img, a[href$=".jpg"], a[href$=".jpeg"], a[href$=".JPEG"], a[href$=".png"], a[href$=".pdf"], a[href$=".PDF"]').each(function() { }); 出于某种原因,尽管此字符串: Packaged in lots of 10 sets <i

这里的代码在大部分情况下工作得非常好
this.content
是来自JSON的HTML字符串

$(this.content).find('img, a[href$=".jpg"], a[href$=".jpeg"], a[href$=".JPEG"], a[href$=".png"], a[href$=".pdf"], a[href$=".PDF"]').each(function() {

});
出于某种原因,尽管此字符串:

Packaged in lots of 10 sets
<img class="alignnone size-full" src="http://www.integra-adhesives.com/wp-content/uploads/2011/03/Sink_Fastener.jpg" alt="" width="300" />
打包成10套一批
正在使jQuery引起一场冲突。它正在抛出:
Uncaught错误:语法错误,无法识别的表达式:

我正在使用jqueryv2.1.1

有人能帮忙吗?

$(something)
有两种工作方式:如果
something
是HTML字符串,它会将其解析为DOM元素;如果是选择器,它将在当前DOM中搜索与该选择器匹配的元素。如果
某物
以和HTML标记开头,则它是一个HTML字符串,否则假定它是一个选择器。您的字符串以
Packaged
开头,它不是HTML标记,因此该字符串作为选择器处理,并且它不是有效的选择器

你应使用:

$('<div>' + this.content).find(...);
你做到了:

$(this.content).find("img");
它找不到它,因为图像是顶级元素。

$(something)
可以通过两种方式工作:如果
something
是HTML字符串,它将其解析为DOM元素;如果是选择器,它将在当前DOM中搜索与该选择器匹配的元素。如果
某物
以和HTML标记开头,则它是一个HTML字符串,否则假定它是一个选择器。您的字符串以
Packaged
开头,它不是HTML标记,因此该字符串作为选择器处理,并且它不是有效的选择器

你应使用:

$('<div>' + this.content).find(...);
你做到了:

$(this.content).find("img");

它找不到它,因为图像是顶级元素。

问题在于jQuery无法判断HTML是选择器表达式还是HTML

从jQuery文档(我的重点):

如果将字符串作为参数传递给$(),jQuery将检查该字符串是否类似于HTML(即,
开头)。如果不是,字符串将被解释为选择器表达式,如上所述


因此,要将HTML识别为HTML,您应该确保它不是以文本节点开头的。为了安全起见,可以将所有HTML包装在
标记中。

问题在于jQuery无法判断HTML是选择器表达式还是HTML

从jQuery文档(我的重点):

如果将字符串作为参数传递给$(),jQuery将检查该字符串是否类似于HTML(即,
开头)。如果不是,字符串将被解释为选择器表达式,如上所述


因此,要将HTML识别为HTML,您应该确保它不是以文本节点开头的。为了安全起见,您可以将所有HTML包装在
标记中。

我通过添加
this.content=$.parseHTML(this.content)修复了这个问题事先


正如Barmar指出的,这是因为jQuery试图使用字符串作为选择器。

我通过添加
this.content=$.parseHTML(this.content)修复了这个问题事先


正如Barmar所指出的,这是因为jQuery试图使用字符串作为选择器。

如果我能回忆清楚的话,我以前遇到过这个错误,它与未转换的正斜杠有关。将查看。@Lessugar,我正在运行2.1.1,所以那里的问题已经解决了,但我确实在那里找到了解决方案。请看我的答案。如果我能正确回忆的话,我以前也有过这个错误,它与未转换的正斜杠有关。将查看。@Lessugar,我正在运行2.1.1,所以那里的问题已经解决了,但我确实在那里找到了解决方案。看看我的答案。谢谢@Barmar,就在你发布答案之前,我自己发现了这一点。我找到了一个更好的解决方法。谢谢@Barmar,在你发布答案之前,我自己发现了这个问题。我找到了一个更好的解决方法。谢谢,我自己发现了这个问题,并发现使用$.parseHTML解决了这个问题。谢谢,我自己发现了这个问题,并发现使用$.parseHTML解决了这个问题。这也是一个很好的解决方案。这也是一个很好的解决方案。