我对jQuery/Javascript有一个相当奇怪的问题。 (这发生在IE,FF和铬)点击功能生成的jQuery对话框中的元素
我有一个(asp.net)网页如下:有很多按钮
报头(在的PreRender生成)
隐藏DIV与按钮做回发(生成的OnLoad)&一个div来作为对话
页使用带有一个iFrame
可以说我有一个按钮'1234_stuff'
作为它的CLIENTID在Hidden div中。 我有一个按钮在头上有一个OnClientClick = "$('#1234_stuff').click();return false;";
当我点击标题中的按钮,这完美的作品。好。
我在报头中的其他按钮(允许称之为PopupStarter),其具有OnClientClick = "Popup('Titel', 'Description', '1234_stuff');return false;";
的JavaScript弹出功能如下:
function Popup(title, description, buttonid) {
$('#dialog-popupText').html('<p><b>' + title + '</b></p><p>' + description + '</p>');
var buttonsToShow;
if (buttonid!= null) {
buttonsToShow = {
'ClickMe': function() {
$('#' + buttonid).click();
$(this).dialog('close');
},
'Cancel': function() {
$(this).dialog('close');
}
}
} else {
buttonsToShow = {
'Cancel': function() {
$(this).dialog('close');
}
}
}
$('#dialog-popup').dialog(
{
resizeable: false,
width: 'auto',
modal: true,
draggable: false,
buttons: buttonsToShow
});
}
当我点击“PopupStarter”按钮jQuery对话框按预期显示,没有麻烦。但是...当我点击ClickMe按钮时,什么也没有发生(除了关闭对话框)。
我会觉得我做错了什么事:让我用一个定时器试了一下:
function Popup(title, description, buttonid) {
$('#dialog-popupText').html('<p><b>' + title + '</b></p><p>' + description + '</p>');
var buttonsToShow;
if (buttonid!= null) {
buttonsToShow = {
'ClickMe': function() {
setTimeout(""$('#"" + buttonid + ""').click();"", 100);
$(this).dialog('close');
},
'Cancel': function() {
$(this).dialog('close');
}
}
} else {
buttonsToShow = {
'Cancel': function() {
$(this).dialog('close');
}
}
}
$('#dialog-popup').dialog(
{
resizeable: false,
width: 'auto',
modal: true,
draggable: false,
buttons: buttonsToShow
});
}
这个作品!现在很奇怪。所以我打电话给父母jQuery
parent.$('#' + buttonid).click();
这也行不通。
最重要的是,当我在浏览器的控制台中手动输入每一行时,它们都可以工作!
你的问题是什么? – simbabque
那么,使用setTimeout()的作品。但其中之一是解决问题的一种肮脏的方式。问题变成:如何直接用javascript点击按钮(而不是使用定时事件来实现)。 –