我的 jQuery 脚本和 Safari(Mac + iPhone)有问题。这是页面的结构:
由于我需要在将数据发送到下一个脚本之前对其进行修改,因此我读取了所有表单(serializeArray),根据需要对其进行修改,将它们写入新表单(显示:无)并让它发送到下一页. 这是脚本:
$("input#newsubmit").click(function(e) {
e.preventDefault();
arraytix = [];
checkboxStatus = 0;
$("input[id^=field]").each(function(i) {
if ($(this).val() != 0) {
arraytix[i] = $(this).attr('name') + ":" + $(this).val() + ":" + $(this).parent().parent().find("li.four").find("input[id*=price_item]").val() + ":" + $(this).parent().parent().find("li.five").find("input[id*=vvk_item]").val();
}
});
var carttix = '';
jQuery.each(arraytix, function(i) {
if (arraytix.hasOwnProperty(i)) {
if (i == arraytix.length - 1) {
carttix += this;
} else {
carttix += this + '-';
}
}
});
$("form#finalSubmit").append( '<input name="cart" value="'+carttix+'" />');
$("form#finalSubmit").append( '<input name="versand" value="'+$("select#item_vat_1").val()+'" />');
$("form#finalSubmit").append( '<input name="barzahlung" value="'+checkboxStatus+'" />');
if (checkboxStatus == 0) {
var fields = $("fieldset.customer").serializeArray();
alert("before each");
jQuery.each(fields, function(i, field){
$("form#finalSubmit").append( '<input name="'+field.name+'" value="'+field.value+'" />');
alert("loop");
});
alert("after jquery.each");
}
//$("form#finalSubmit").submit();
}
jQuery.each 的第一个实例在所有浏览器和平台上都按预期工作。带有 append 命令的 jQuery.each 的第二个实例不会在所有平台上的 Safari 上执行。
出于调试目的,我添加了一些警报。带有 Safari 的 Mac:alert("before each") 和 alert("after each") 被触发,jQuery.each 不会。其他浏览器(包括 Firefox Mac)没有任何问题。第一个警报、一些警报(“循环”)和最后一个警报按原样启动。
这里有什么问题?