Обновлен с полным кодомJQuery Делегат внутри Диалог - селектор не работает
У меня есть диалоговое окно 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 внутри диалога. Я также пытался использовать тело и документ как контейнер, тот же аффект.
Вот полный код
Это своего рода работа, но он не получает привязку к селектору .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();
});
Спасибо.
Существует ли 'div.container' в момент выполнения' делегата'? (Является ли он в обработчике событий готовности DOM?) –
'div.container' существует, когда диалог открыт. Благодарю. – Saxman
Вы должны разместить больше своих HTML и JS. – shanabus