jQuery ajax html回调中的换行符会导致错误
我正在从jQuery ajax html回调中的换行符会导致错误,ajax,jquery,Ajax,Jquery,我正在从$.ajax调用返回一大块HTML。来自PHP的字符串在开头有两个换行符,例如 $data = " <div> <p>Here is some text</p> </div>"; 在我添加.hide().fadeIn(300)之前,一切都会正常工作,它会在该点抛出:TypeError:“undefined”不是对象(评估'hooks.cur=fn')jquery.js:1925。如果我把线去掉,它就会工作。我使用的是$.par
$.ajax
调用返回一大块HTML。来自PHP的字符串在开头有两个换行符,例如
$data = "
<div>
<p>Here is some text</p>
</div>";
在我添加.hide().fadeIn(300)
之前,一切都会正常工作,它会在该点抛出:TypeError:“undefined”不是对象(评估'hooks.cur=fn')jquery.js:1925
。如果我把线去掉,它就会工作。我使用的是$.parseHTML
,因为jQuery说:
如果已知字符串为HTML,但可能以任意文本开头,则
不是HTML标记,请将其传递给jQuery.parseHTML(),后者将返回
表示标记的DOM节点数组。可以创建jQuery集合
由此创建,例如:$($.parseHTML(htmlString))
知道发生了什么吗?这个问题似乎是由集合中的文本节点引起的,您可以使用
将其过滤掉。filter('*')
我的HTML字符串没有任何顶级文本节点,或者我认为。。。我发现问题只是多余的空白。这对我来说很有效,感觉比以后过滤空节点更好:
$($.parseHTML($.trim(html_string)))
可能
.parseHTML()
正在将HTML数据分解为数组,而不仅仅是其中包含jQuery对象,即\n
,或者正在发生类似的情况。请尝试筛选文本节点,查看错误是否仍然存在.filter('*')
.Bingo<代码>var$html=$($.parseHTML(数据)).filter('*')代码>工作。回答这个问题,我会接受的。嗨,我用trim解决了一个类似的问题,但是用另一个函数解决了同样的问题。你介意看一下吗?
var $html = $($.parseHTML(data)).filter('*');
$($.parseHTML($.trim(html_string)))