我从一个$.ajax电话中返回了一大块HTML .来自PHP的字符串在开头有两个换行符,例如
$data = "
<div>
<p>Here is some text</p>
</div>";
Run Code Online (Sandbox Code Playgroud)
这是$.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);
}
});
});
Run Code Online (Sandbox Code Playgroud)
一切都有效,直到我添加.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)).
知道发生了什么事吗?
Mus*_*usa 10
问题似乎是由集合中的文本节点引起的,您可以使用它来过滤它 .filter('*')
var $html = $($.parseHTML(data)).filter('*');
Run Code Online (Sandbox Code Playgroud)