我對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點擊按鈕(而不是使用定時事件來實現)。 –