【发布时间】:2012-03-07 23:33:10
【问题描述】:
已更新完整代码
我有一个 jQuery 对话框,我想将一些单击处理程序事件绑定到使用 jQuery 委托,但不知何故它不起作用。
这行得通:
$('table.standard tbody td .delete').live('click', function() {
alert('delete something');
});
这不起作用,当我在容器中单击 ANYWHERE 时会调用警报,但我只希望 ".delete" 选择器使用它。 p>
$('div.container').delegate('table.standard tbody td .delete', 'click', function() {
alert('delete something');
});
div.container 是对话框内的 div。我也试过用 body 和 document 作为容器,效果一样。
这是完整的代码
这有点工作,但它不会绑定到 .delete 类选择器,而是绑定到整行。
function ClientTierDialog_class() {
var self = this;
this.fDialogBehavior = function(dialog) {
$(dialog).find("a.button").unbind("click").bind("click", function(e) {
if ($(this).hasClass("cancelButton")) {
$(dialog).dialog("close");
}
else if ($(this).hasClass("okButton")) {
self.saveTier();
}
});
};
this.$dialog = null;
this.baseOptions = {
id: "TierDialog",
width: 585,
height: 600,
className: "tier-dialog",
header: "Create Tier",
body: "",
buttonText: {
cancel: "Close",
ok: "Save"
},
resizable: false,
modal: true,
fDialogBehavior: this.fDialogBehavior
};
}
/***************************************************************
* Events
***************************************************************/
ClientTierDialog_class.prototype.openDialog = function(options) {
var self = this;
var tierName = options.tierName;
var url = "Administration/GetClientTierDialog";
this.$dialog = null;
$.ajax({
url: url,
data: options,
success: function(response) {
var $content = $(response.html);
var options = self.baseOptions;
if (tierName !== undefined && tierName.length > 0) {
options.header = "Edit Tier";
}
options.body = $content;
WSOD.dialog(options);
this.$dialog = $("div.tier-dialog");
self.initEvents();
},
error: function() {
// Handle errors
}
});
};
ClientTierDialog_class.prototype.delete = function() {
$('table#addedFirms tbody tr').delegate('.delete', 'click', function() {
alert('delete something');
});
};
ClientTierDialog_class.prototype.initEvents = function() {
var self = this;
self.delete();
};
$(document).ready(function() {
ClientTierDialog = new ClientTierDialog_class();
});
谢谢。
【问题讨论】:
-
在执行
delegate时是否存在div.container? (它是否在 DOM 就绪事件处理程序中?) -
div.container在对话框打开时存在。谢谢。 -
你应该发布更多的 HTML 和 JS。
-
我已经更新了完整的代码......目前,
delete方法有点工作,但没有真正工作......这个方法不是在.delete类上执行,而是在整个行点击。谢谢。
标签: jquery jquery-ui jquery-selectors