jQuery中的换行符ajax html回调导致错误

我从$.ajax调用返回一大块HTML。 来自PHP的字符串在开头有两个换行符,例如

 $data = " 

Here is some text

";

这是$.ajax调用:

 $('form#form_id').submit(function(e){ e.preventDefault(); $form = $(this); $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize(), dataType: 'html', success: function(data) { var $html = $($.parseHTML(data)); $html.appendTo('#container_id').hide().fadeIn(300); } }); }); 

一切正常,直到我添加.hide().fadeIn(300) ,此时它抛出: TypeError: 'undefined' is not an object (evaluating 'hooks.cur = fn') jquery.js:1925 。 如果我删除换行符就行了。 我使用的是$.parseHTML因为jQuery说:

如果已知字符串是HTML但可以以不是HTML标记的任意文本开头,则将其传递给jQuery.parseHTML(),它将返回表示标记的DOM节点数组。 可以从中创建jQuery集合,例如:$($。parseHTML(htmlString))。

知道发生了什么事吗?

问题似乎是由集合中的文本节点引起的,您可以使用.filter('*')其过滤掉

 var $html = $($.parseHTML(data)).filter('*'); 

我的HTML字符串没有任何顶级文本节点,或者我认为……我发现问题只是额外的空白。 这对我有用,并且比以后过滤掉空节点感觉更好:

 $($.parseHTML($.trim(html_string)))