2009-08-28 56 views
0

我希望有人可以指出一個相對jQuery/jqModal新手在正確的方向調試此錯誤。我將一個html片段加載到div中,然後使用jqModal將該div顯示爲模態對話框。問題是div顯示,但沒有與我更新的HTML。jqModal/JQuery的問題,div不更新與新的內容?

我展示我從一個jQuery調用的響應jqModal對話框,函數foo從一個onclick事件稱爲:

function foo(url) 
{ 
    $.ajax({ 
     type: "GET", 
     url: url, 
     success: function(msg) 
     { 
      $('#ajaxmodal').html(msg); 
      $('#ajaxmodal').jqmShow(); 
     } 
    }); 
} 

ajaxmodal是一個簡單的div。

最初,我認爲問題必須在html傳遞給回調函數的代碼片段(msg)中,但我不認爲就是這樣,即使當我註釋掉$時,我也會得到err(見下面) ('#ajaxmodal').html(msg)行或將其傳遞給硬編碼html。我認爲我有jqModal配置正確,其他調用使用我們的ajaxmodal div正常工作,我能夠顯示模式,更新基於服務器響應的內容等。

當我嘗試在firebug中調試時,在調用.jqmShow()之後發生以下錯誤。我曾經在其他地方看過這個錯誤,看起來可能該頁面還沒有加載,我承認我對此感到困惑,因爲我們已經將我們的jqModal選擇器包裝在$(document).ready()中,電話,所以也許我有一個更大的問題,這個電話恰好觸發?

從jquery.jqModal.js文件64行:JS ERR是$( ':輸入:可見',HW)[0]是未定義在所述行:

f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}} 

當我通過步驟這在firefox中,hw [0]似乎沒問題,它引用了我們的'#ajaxmodal'div。

在此先感謝您的任何建議,以跟蹤此?

回答

0

我不熟悉jqModal,但你可能想嘗試

append() 

不是

html() 

我不知道這會有所幫助,但它是值得一試

+0

喜克里斯,謝謝 - 我確實已經嘗試過了,沒有用。 – echoesofspring 2009-08-28 19:57:18

0

對我的問題找到了一個解決方案,發佈結果以防萬一它幫助別人,但我不太明白它。

這個問題(我認爲)與ajaxmodal有關,當我做.html()調用時,並不完全是初始化爲jqModal元素。調用.jqmShow使用我們的默認文本初始化div。我曾想過把這個文件準備功能足以初始化的對話框:

$('#ajaxmodal').jqm({ajax: '@href', trigger: 'a[rel*=modal]', ajaxText: 'Loading...'}); 

而是要解決我的問題,我不得不扭轉電話:

$('#ajaxmodal').jqmShow(); 
$('#ajaxmodal').html(msg); 
+0

非常有趣,愛上那些生命週期問題! – 2009-08-29 18:26:10

0

這個問題是老一點但是這是我在google上可以找到類似情況的唯一結果之一,所以我想我會分享我的經驗。

jqModal中有問題的行試圖將它在彈出窗體中找到的第一個輸入元素集中,如果沒有,則引發異常。這就是它在異常塊中的原因 - 如果禁用了螢火蟲,沒有什麼不好的事情發生。但是,如果你像我一樣,在煩人的一面發現錯誤冒泡,一個解決方法是向你執行jqmShow的元素添加一個虛擬輸入元素。

f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}}, 

到:

2

如果你沒有輸入需要關注,您可以在jqModal.js從改變

f=function(h){try{}catch(_){}}, 

這就是我做反正;)