2012-03-27 44 views
0

...或者爲什麼$(this).dialog()在使用動態HTML時在Firefox中失敗?

我有一個點擊事件,在網頁上打開一個jQuery模式對話框,並且它在Chrome和IE中工作正常,但在Firefox中無法正常工作。

下面是相關的代碼:

var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000) 
var dialogDiv = $(document.createElement('div')).attr("id", dialogId); 

dialogDiv.load(this.href, function() { 
    var dialog = $(this).dialog({ autoOpen: false }); 
    ... 
}); 

在Firefox 11,$(this).dialog({ autoOpen: false })失敗,出現以下錯誤消息:

$(本).dialog不是函數

但在IE 9中,Chrome 17的一切工作正常。任何線索爲什麼是這樣?

UPDATE:

這裏是我的document.ready函數,其中上面的代碼了。我刪除它來簡化事情。 ALERT A在ALERT B之前發生。ALERT A表示[object Object]。 ALERT B發生在我點擊一個鏈接時,它說'undefined'

$(function() { 

    alert($.ui); // ALERT A 

    // Wire up the click event of any dialog links 
    $('.dialogLink').live('click', function() { 
     alert($.ui); // ALERT B 
     return false; 
    }); 
}); 

更新2:

現在我銷指出問題出在哪裏來臨從我轉述我的問題,並張貼最小代碼重現原來的問題就在這裏:Why is FF on OS X losing jQuery-UI in click event handler?

+0

你可以使用console.log或簡單的警報來檢查jquery是否工作正常嗎?此外,如果它的jQuery UI,使用螢火蟲來檢查它是否加載ff罰款! – 2012-03-27 04:53:11

+0

@MarshallMathews:jQuery工作正常,因爲dialogDiv用$(document.createElement('div'))。attr(「id」,dialogId)正確初始化。我用螢火蟲檢查了這個。你將如何去檢查jQuery-UI是否可以用Firebug加載? – 2012-03-27 17:21:20

+0

'console.log(「這解釋了對話方法:」+ $ .ui.dialog)'如果爲false,那麼UI可能沒有加載正確 – 2012-03-27 18:16:10

回答

0

你」如果我沒有弄錯的話,我得到了一些語法/鏈接問題:

var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000) 
//var dialogDiv = $(document.createElement('div')).attr("id", dialogId); 
//dialogDiv equals the attribute 'id' 
//try and console.log(dialogDiv) right here. what I think you want is: 

var dialogDiv = $("<div />"); 
dialogDiv.attr("id", dialogId).load(this.href, function() { 
    var dialog = $(this).dialog({ autoOpen: false }); 
    ... 
}); 

我也不知道不認爲這是初始化你想要做的事的正確方法......你能描述一下你的網頁上發生了什麼嗎?

你可能會想到做這樣的事情:

var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000); 
//Build some HTML here in the dialog div, or in a string. 
theHTML = $('#'+dialogId).html() || "<p>This is a string of HTML</p>"; 
$('body').on('click', ".button" function() { 
    console.log($.ui); 
    $.dialog({autoOpen:true, html: theHTML}) 
}); 
+0

問題是,我在使用Firefox時在點擊事件處理程序中丟失了jQuery-UI。我的代碼在Google Chrome和IE中運行良好。我不認爲你提出的改變將解決我正在努力解決的問題。 – 2012-03-28 01:52:31

+0

嘗試把$ .ui放在那一塊,我沒有ff11,但它適用於我在jsfiddle.net – Relic 2012-03-28 15:21:28

-1

的問題是用火狐瀏覽器插件。我以安全模式啓動Firefox,現在一切正常。我試圖確定哪個附加組件導致了問題,並且我重新啓動了Firefox,並打開或關閉了各種附加組件,但我現在似乎無法重現此問題。

相關問題