我从$.ajax通话中返回了大量HTML 。来自PHP的字符串开头有两个换行符,例如
$.ajax
$data = " <div> <p>Here is some text</p> </div>";
这里是$.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说:
.hide().fadeIn(300)
TypeError: 'undefined' is not an object (evaluating 'hooks.cur = fn') jquery.js:1925
$.parseHTML
如果已知字符串是HTML,但可以以不是HTML标签的任意文本开头,则将其传递给jQuery.parseHTML(),它将返回表示标记的DOM节点数组。可以从中创建一个jQuery集合,例如:$($。parseHTML(htmlString))。
知道发生了什么吗?
该问题似乎是由您可以使用其过滤出来的集合中的文本节点引起的 .filter('*')
.filter('*')
var $html = $($.parseHTML(data)).filter('*');