Обновлено с полным кодом
У меня есть диалоговое окно jQuery, в котором я хочу привязать некоторые события обработчика кликов к использованию делегата jQuery, но почему-то это не работает.
Это работает:
$('table.standard tbody td .delete').live('click', function() {
alert('delete something');
});
Это не работает, это вызывает предупреждение, когда я нажимаю ВСЕГДА в контейнере, но я хочу только для ".delete " селектор.
$('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();
});
Спасибо.