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解决了这个问题。这也是一个很好的解决方案。这也是一个很好的解决方案。