我有一个具体的问题。我想抓住一些元素,遍历它,删除或编辑不需要的元素,然后通过JSON发布元素数据。
我的功能看起来像这样。
$("#submit_btn").off("click").on("click", function(e) {
e.preventDefault();
pdfhtml = $("#Calculation").html();
var inputs = $("input[type=number]", pdfhtml);
$.each(inputs, function(k, v) {
$(this).remove();
//$(this, pdfhtml).remove(); //also not working
})
var data = {};
data["data"] = pdfhtml;
alert(pdfhtml);
getdataJSON("","POST", "html", data, true);
});
我遇到的问题是没有任何反应,在提交此数据后元素仍然存在。我究竟做错了什么?我需要这个以便用mpdf6(PHP)生成pdf。
答案 0 :(得分:3)
您正在创建一个临时jQuery对象,并且正在删除输入表格,但原始字符串pdfhtml
未被修改
$("#submit_btn").off("click").on("click", function (e) {
e.preventDefault();
//create a temp dom structure with the target html as its content
var $temp = $('<div />', {
html: $("#Calculation").html()
});
//modify the temp dom structure
$temp.find("input[type=number]").remove();
var data = {};
//get the update html content from the temp object
data["data"] = $temp.html();
alert(pdfhtml);
getdataJSON("", "POST", "html", data, true);
});
答案 1 :(得分:2)
jQuery不会像那样进行字符串修改。所有inputs
都是<input>
标记的内存中表示,对这些标记的更改不会保存回pdfhtml
字符串。
你应该做的是克隆#Calculation
div,然后执行你的行动:
$("#submit_btn").off("click").on("click", function(e) {
e.preventDefault();
var pdfhtml = $("#Calculation").clone(); // Clone this
var inputs = pdfhtml.find("input[type=number]");
$.each(inputs, function(k, v) {
$(this).remove();
});
var data = {};
data["data"] = pdfhtml.html(); // Read the HTML here...
alert(pdfhtml);
getdataJSON("","POST", "html", data, true);
});