我从$.ajax调用返回一大块
HTML.来自
PHP的字符串在开头有两个换行符,例如
$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’不是一个对象(评估’hooks.cur = fn’)jquery.js:1925.如果我删除换行符就行了.我正在使用$.parseHTML,因为jQuery说:
If a string is known to be HTML but may start with arbitrary text that
is not an HTML tag,pass it to jQuery.parseHTML() which will return an
array of DOM nodes representing the markup. A jQuery collection can be
created from this,for example: $($.parseHTML(htmlString)).
知道发生了什么事吗?
解决方法
问题似乎是由集合中的文本节点引起的,您可以使用.filter(‘*’)将其过滤掉
var $html = $($.parseHTML(data)).filter('*');