Javascript jQuery-动态添加按钮单击不工作
我编写了以下代码,创建了一个带有动态添加内容的弹出窗口。现在,我想删除或编辑这些添加的项目,但单击其中一个按钮(btnLSM_Remove+btnLSM_edit)似乎不会触发事件。有什么线索吗Javascript jQuery-动态添加按钮单击不工作,javascript,jquery,jquery-ui,jquery-dialog,Javascript,Jquery,Jquery Ui,Jquery Dialog,我编写了以下代码,创建了一个带有动态添加内容的弹出窗口。现在,我想删除或编辑这些添加的项目,但单击其中一个按钮(btnLSM_Remove+btnLSM_edit)似乎不会触发事件。有什么线索吗btnLSM\u添加和btnLSM\u好的工作方式相同,它们确实工作 function ListManagementDialog(obj, dialogTitle, dialogText, listDelimiter, btnNames) { if (!$.isArray(btnNames)) {
btnLSM\u添加
和btnLSM\u好的
工作方式相同,它们确实工作
function ListManagementDialog(obj, dialogTitle, dialogText, listDelimiter, btnNames) {
if (!$.isArray(btnNames)) {
return false;
}
if (dialogConfirmed) {
return false;
}
btns[btnNames[0]] = function () {
$(this).dialog('close');
dialogConfirmed = true;
if (obj) {
obj.click();
}
};
btns[btnNames[1]] = function () {
$(this).dialog('close');
};
$('body').append(String.Format('<div id="divLSM_Dialog" title="{0}"><p>{1}</p>' +
'<button id="btnLSM_Add" class="btnAdd" type="button" role="button" aria-disabled="false" title="Hinzufügen" />' +
'<input id="txbLSM_Emailadresse" class="text ui-widget-content ui-corner-all" type="text" name="txbLSM_Emailadresse" style="display:none;">' +
'<button id="btnLSM_Okay" class="btnOkay" type="button" role="button" aria-disabled="false" title="Übernehmen" style="display:none;" />' +
'<br /><br />' +
'<table id="tblLSM_Items" class="ui-widget ui-widget-content">' +
'<thead>' +
'<tr class="ui-widget-header ">' +
'<th>Emailadresse</th>' +
'<th />' +
'</tr>' +
'</thead>' +
'<tbody />' +
'</table>' +
'</div>', dialogTitle, dialogText));
$('#btnLSM_Add').click(function () {
$('#txbLSM_Emailadresse').val('');
$('#txbLSM_Emailadresse').show();
$('#btnLSM_Okay').show();
$('#txbLSM_Emailadresse').focus();
});
$('#btnLSM_Okay').click(function () {
$('#tblLSM_Items tbody').append('<tr>' +
'<td>' + $('#txbLSM_Emailadresse').val() + '</td>' +
'<td>' + '<button id="btnLSM_Remove" class="btnRemove" type="button" role="button" aria-disabled="false" title="Entfernen" />' + '<button id="btnLSM_Change" class="btnEdit" type="button" role="button" aria-disabled="false" title="Ändern" />' + '</td>' +
'</tr>');
$('#txbLSM_Emailadresse').hide();
$('#btnLSM_Okay').hide();
});
$('#btnLSM_Remove').click(function () {
alert("hohoho"); //no alert-popup
});
$('#btnLSM_Change').click(function () {
alert("hohoho"); //no alert-popup
});
$('#divLSM_Dialog').dialog({
modal: true,
resizable: false,
draggable: true,
width: 600,
height: 300,
close: function (event, ui) {
$('body').find('#divLSM_Dialog').remove();
},
buttons: btns
});
return dialogConfirmed;
}
函数ListManagementDialog(obj、dialogTitle、dialogText、listDelimiter、Btname){
如果(!$.isArray(btnNames)){
返回false;
}
如果(已确认){
返回false;
}
BTN[btnNames[0]]=函数(){
$(this.dialog('close');
dialogconfirm=true;
如果(obj){
obj.click();
}
};
BTN[btnNames[1]]=函数(){
$(this.dialog('close');
};
$('body').append(String.Format('{1}'+
'' +
'' +
'' +
“
”+
'' +
'' +
'' +
“电子邮件地址”+
'' +
'' +
'' +
'' +
'' +
'',dialogTitle,dialogText));
$('#btnLSM_Add')。单击(函数(){
$('#txbLSM_emailaddress').val('');
$('#txbLSM_emailadrese').show();
$('btnLSM_ok')。show();
$('txbLSM_emailadrese').focus();
});
$('btnLSM_ok')。单击(函数(){
$('tblLSM_Items tbody')。附加('+
'+$('#txbLSM_emailadrese').val()+'+
'' + '' + '' + '' +
'');
$('#txbLSM_emailaddress').hide();
$('btnLSM_ok').hide();
});
$('#btnLSM_Remove')。单击(函数(){
警报(“hohoho”);//没有警报弹出窗口
});
$('btnLSM_Change')。单击(函数(){
警报(“hohoho”);//没有警报弹出窗口
});
$(“#divLSM_对话框”)。对话框({
莫代尔:是的,
可调整大小:false,
真的,
宽度:600,
身高:300,
关闭:功能(事件、用户界面){
$('body')。查找('divLSM_对话框')。删除();
},
按钮:BTN
});
返回对话框已确认;
}
呼叫时,您的btnLSM\u删除按钮不存在
$('#btnLSM_Remove').click(function () {
因此,$('#btnLSM_Remove')
集合是空的,处理程序被添加为空
您可以使用以下功能:
$('#divLSM_Dialog').on('click', '#btnLSM_Remove', function () {
注册将应用于委托定义后出现的按钮的处理程序
编辑:
在jQuery 1.6.2中,您可以使用:
它可能会工作,但不幸的是,我们仍然在使用1.6.2,当我尝试将其更改为1.8.2时,我的整个弹出窗口不知何故变得不起作用。你知道为什么会这样吗?很难说为什么你的代码会在1.6.2而不是1.8.2中工作,但我编辑了我的答案,给出了jQuery 1.6.2的工作语法。因为“正常”对话框似乎也不工作。是否从1.6.2更改为1.8.2?或者我还需要获得最新的jQuery UI吗?我们现在用的是1.8.16,当然有很多变化。您应该始终使用至少与您使用的核心版本相同的UI版本。我会尝试使用上一个稳定的UI(1.8.24),但很难说是什么样的错误。好的,现在我将使用实时实现。谢谢你的帮助:-)
$('#btnLSM_Remove').live('click', function () {