我的网络应用有问题。它的UI是基于窗口的,因此可以同时打开许多窗口。这些窗口是DIV,它们加载了AJAX调用。当所有窗口的内容都是唯一的时,一切正常。
但是,有时需要同时打开2个或更多相同的窗口。两个窗口中加载的AJAX内容具有相同的HTML ID属性,相同的JS函数以及用于此特定窗口的相同全局变量。然后显然所有人都崩溃了。
我正在寻找一种解决这个问题的方法。我想到的唯一一个是改变使用ID属性并改用类。当整个用户界面在启动时加载时,可以共享和加载JS函数。但那些具有相同名称的全局变量呢?
任何建议都将不胜感激。
答案 0 :(得分:0)
HTML id属性在整个文档的上下文中必须是唯一的。你可以破解它或重新考虑它。
如果您决定重新考虑 - 请考虑全局变量。
帮助重新思考:如果你使用id来识别对象,你可以使用这样的模式:
w11-22222
其中w只是一个字母(ids不应以数字开头),11是窗口编号, - 是 - ;),22222是您目前使用的ID。
当您需要旧ID时,它只是id.substring(4)
全局变量应替换为包含有关windows等信息的数组/对象的全局对象。
只是一个想法:
可以以不需要id来获取窗口的方式来生成接口。创建窗口时:
var $awindow=$('<div></div>')...//build upon it with attr and append
$awindow.appendTo('body');
AwesomeGlobalObjectToControllStuff.rememberWindow('the key to find it',$awindow);
然后使用该对象从存储中返回$ awindow。