以下是代码示例。
$(".remove.group").live("click", function (ev) {
var button = $(ev.currentTarget);
var action = button.get(0).dataset["action"];
var method = button.get(0).dataset["method"];
var modal = $("#remove");
modal.find(".primaryaction").bind("click", function (e) {
$.ajax({
url: action,
type: method,
dataType: "xml",
success: function (rawResponse, status, xhr) {
//some business logic
$.nmTop().close();
},
error: function (xhr) {
console.log(arguments);
var message = "Could not remove group";
alert(message);
$.nmTop().close();
}
});
});
modal.find(".cancelButton").bind("click", function (e) {
$.nmTop().close();
});
$.nmManual("#remove");
return false;
});
我在这里使用nyroModal和jQuery。
所有点击事件首次正常运行。但是,如果我再次重新打开模态并单击任一按钮,nyroModal最终会抛出错误:
this.elts.cont未定义
答案 0 :(得分:1)
如果你查看调试版本,我通过添加elts存在的测试来解决这个问题。
_unreposition: function() {
if (this.elts.length) {
this.elts.cont.css('overflow', '');
var elts = this.elts.all.find('.nmReposition');
if (elts.length)
this.elts.cont.append(elts.removeAttr('style'));
}
this._callFilters('afterUnreposition');
}
答案 1 :(得分:0)
为了完整性,请执行@Sparkx所做的事情,但后来又出现了一个错误,即“TypeError:nm.elts.cont is undefined”。要解决此更改:
hideCont: function(nm, clb) {
nm.elts.cont.css('overflow', 'hidden').fadeOut(clb);
为:
hideCont: function(nm, clb) {
if(nm.elts.cont) nm.elts.cont.css('overflow', 'hidden').fadeOut(clb);