2012-06-28 47 views
1

我確信有一個簡單的解決方案,但迄今爲止它是躲避我。我試圖從一個函數內部使用jqueryui打開一個模式窗口,它失敗並顯示消息「對話框不是函數」。最後,我將填充通過ajax提取的內容的模式,但是我已經將其剝離到裸位以找出爲什麼我不能實例化模式窗口。我使用谷歌CDN的jquery 1.7.2和jqueryui 1.8.18。錯誤從函數內部顯示JqueryUI模態窗口

<!-- as a link --> 
<a href="javascript:view_log('1');">Log 1</a> 

<!-- as a button --> 
<input type="button" id="thebutton" value="View Log" /> 

<script type="text/javascript"> 

/* this works on page load */ 
var test1 = $(document.createElement('div')); 
test1.dialog({ modal:true }); 
test1.html('Testing'); 

/* this also works (on page load) */ 
function displayModal(content) { 
    var newDiv = $(document.createElement('div')); 
    newDiv.dialog({ modal:true }); 
    newDiv.html(content); 
} 
displayModal('Testing by calling displayModal() function'); 

/* this fails with error "newDiv.dialog is not a function" */ 
function view_log(id) { 
    displayModal('Log for id ' + id); 
} 

/* this also fails, same error ... */ 
$('#thebutton').bind('click', function() { 
    displayModal('Testing again...'); 
}); 

</script> 

任何jQuery的專家,可以指出我的錯誤?

謝謝!

+1

對我的作品 - http://jsfiddle.net/FFrYz/ –

+0

@Cameron馬丁鏈接一個沒有你的提琴工作。 –

+0

我應該補充一點,我一直在使用Firebug進行FF測試,甚至沒有看過IE ...... – Madswede

回答

1

它對我來說工作正常。我能想到的唯一的事情是,你應該使用$(document).ready(function() {});

$(document).ready(function() { 
    $('#thebutton').bind('click', function() { 
     displayModal('Testing again...'); 
    }); 
}); 

Live DEMO

+0

有趣的是,我也試過,也許這個頁面沒有完全加載,但我仍然得到錯誤。 – Madswede

+0

你試過演示了嗎?這是你的代碼只是粘貼到小提琴,它正在爲我工​​作。網頁上還有其他可能會干擾的內容嗎? –

+0

謝謝Josh,我的頁面中必須有其他東西導致錯誤,我將不得不深入挖掘。很高興知道我沒有完全失去我的彈珠(僅部分)。 – Madswede