我遇到了来自jquery的unbind事件的问题。 我点击一个按钮后加载一个模态,在这个模态中我有两种可能性,继续或取消。如果我继续有一些验证,如果出现问题,应该出现警报,或者如果我点击取消我关闭模态。但是,如果我取消模态,然后单击按钮,在单击“继续”时再次使用ajax调用加载模式,警报将出现2次,此时它应该只出现一次。我已尝试使用unbind事件,如代码中所示,但它似乎没有用,有什么想法吗?
ajax调用由以下代码代码完成:
function ValidacionGeneral() {
var frmObs = $("#frmCreate");
$.ajax({
url: '@Url.Action("ValidacionGeneral", "Viajes")',
type: 'POST',
dataType: "text",
data: frmObs.serialize(),
success: function (data) {
if (data == "OK") {
$('#frmCreate').submit();
}
else {
$.unblockUI();
$.modal(data);
}
}
});
}
模态的脚本是:
<script type="text/javascript">
$(document).ready(function () {
$("#btnAceptarValidacionGeneral").unbind("click");
$("#btnAceptarValidacionGeneral").live("click", function (e) {
e.preventDefault();
var error1 = false;
var error2 = false;
var error3 = false;
var error4 = false;
if ($('#ddlMotivosDistancia').length) {
error1 = $("#ddlMotivosDistancia").val() == '00000000-0000-0000-0000-000000000000';
}
if ($('#ddlMotivosRendimiento').length) {
error2 = $("#ddlMotivosRendimiento").val() == '00000000-0000-0000-0000-000000000000';
}
if ($('#ddlMotivosCarga').length) {
error3 = $("#ddlMotivosCarga").val() == '00000000-0000-0000-0000-000000000000';
}
if ($('#ddlMotivosDuracion').length) {
error4 = $("#ddlMotivosDuracion").val() == '00000000-0000-0000-0000-000000000000';
}
if (error1 || error2 || error3 || error4) {
alert('Debe seleccionar los motivos de tolerancia correspondientes para las alertas');
} else {
var form = $('#frmCreate');
if (form.html() == null) {
form = $('#frmEdit');
}
form.submit();
}
});
$("#btnCancelarValidacionGenral").live("click", function () {
$("#IdMotivoToleranciaDistancia").val('00000000-0000-0000-0000-000000000000');
$("#IdMotivoToleranciaRendimiento").val('00000000-0000-0000-0000-000000000000');
$("#IdMotivoToleranciaCarga").val('00000000-0000-0000-0000-000000000000');
$("#IdMotivoToleranciaDuracion").val('00000000-0000-0000-0000-000000000000');
});
});
答案 0 :(得分:0)
使用off("click")
取消绑定所有点击事件:
$("#frmCreate").off("click")
此外,如果它是一次性的事情,首先使用$.one
绑定它:
$("#frmCreate").one("click", function(){/*do this once and once only */});
HTH
答案 1 :(得分:0)
只有当DOM准备就绪时,您的解除绑定$("#btnAceptarValidacionGeneral").unbind("click");
才会执行一次,我认为您必须将其移至功能ValidacionGeneral()
答案 2 :(得分:0)