我有这个和一个简单的问题。
$.ajax({
type: "POST",
url: "/",
data: $(".form").serialize(),
dataType: "html",
success: function (data) {
$("#id").html(data);
}
});
内部“数据”是我插入DOM的一些html。那没问题。但是我想在这之前操纵“数据”。我怎样才能做到这一点?例如,“data”中有一些li元素。例如,在将数据插入DOM之前,我将如何删除“data”字符串中的最后一个li元素?
我试过像
这样的东西$(data li:last)remove();
......但那没有用。
感谢您的帮助。
答案 0 :(得分:31)
您不需要隐藏的DIV。如果要将html字符串转换为DOM片段,只需在其上调用jQuery即可。在您的示例中:
success: function(data) {
var jqObj = jQuery(data);
jqObj.find("li:last").remove();
$("#id").empty().append(jqObj);
}
虽然有些IE注意事项:
var div = jQuery("<div/>"); div.html(data);
创建容器,然后在执行$("#id").html(div.html())
之前对其进行操作。答案 1 :(得分:8)
您可以从任意HTML创建jQuery对象,例如:
$('<ul><li>Item</li></ul>');
所以,你可以这样做:
success: function(data) {
var $list = $(data);
$list.find('li:last').remove();
// Do something with $list here, like append().
}
这是一个可以在JS Bin上使用的工作示例:http://jsbin.com/ejule3/edit
答案 2 :(得分:5)
返回的数据是一个字符串,通过jQuery无法在dom中找到,直到它实际上在DOM中。您需要解析此字符串并提取所需的数据,或在插入DOM后对其进行编辑。
答案 3 :(得分:3)
Jay's answer是对的 - 您需要先将HTML数据插入DOM(或解析字符串,这看起来很麻烦)。您可以做的是将数据附加到隐藏的DIV
,修改它,然后将数据复制到不同的DOM元素或只显示DIV