2010-11-18 57 views
0

我的web應用程序出現問題。它的用戶界面是基於窗口的,因此可以同時打開多個窗口。這些窗口是加載了AJAX調用的DIV。當所有窗口的內容都是唯一的時候,一切正常。帶窗口的HTML + Jquery web應用程序 - 重複的ID和重複的Javascript

但是,有時需要同時打開2個或更多相同的窗口。兩個窗口中加載的AJAX內容具有相同的HTML ID屬性,相同的JS函數和用於此特定窗口的相同全局變量。然後顯然所有分手。

我正在尋找一種方法來解決這個問題。我唯一想到的就是改變ID屬性並改爲使用類。當整個用戶界面在啓動時加載時,可以共享和加載JS功能。但那些具有相同名稱的全局變量呢?

任何建議將不勝感激。

回答

0

HTML id屬性在整個文檔的上下文中必須是唯一的。你可以破解它或重新考慮它。

如果您決定重新考慮 - 也考慮全局變量。

幫助中反思:如果您使用ID來識別物體可以使用的模式是這樣的:

w11-22222

其中w僅僅是一個字母(IDS不應以數字開頭) 11是一個窗口號碼, - 是 - ;),22222是你使用到目前爲止的ID。

當你需要舊的標識,它只是id.substring(4)

全局變量應該有一個全局對象來代替持有約含窗等

只是一個想法信息數組/對象:

可以通過一種不需要id來獲取窗口的方式來設置界面。當創建窗口時,請執行以下操作:

var $awindow=$('<div></div>')...//build upon it with attr and append 
$awindow.appendTo('body'); 
AwesomeGlobalObjectToControllStuff.rememberWindow('the key to find it',$awindow); 

然後使用該對象從其存儲中返回$ awindow。

+0

感謝您的回答,我正在考慮做類似的事情,所以您剛剛證實了我的想法。哦,很多討厭的工作都在前面:-( – Frodik 2010-11-18 12:25:12

+0

)根據應用程序的不同,可能會有一個地方可以確保唯一的ID,我不知道該應用程序,所以它只是一個通用的解決方案。 – naugtur 2010-11-18 12:28:14