带有Windows的HTML + Jquery Web应用程序 - 重复ID和重复的Javascript

时间:2010-11-18 12:06:10

标签: javascript jquery html

我的网络应用有问题。它的UI是基于窗口的,因此可以同时打开许多窗口。这些窗口是DIV,它们加载了AJAX调用。当所有窗口的内容都是唯一的时,一切正常。

但是,有时需要同时打开2个或更多相同的窗口。两个窗口中加载的AJAX内容具有相同的HTML ID属性,相同的JS函数以及用于此特定窗口的相同全局变量。然后显然所有人都崩溃了。

我正在寻找一种解决这个问题的方法。我想到的唯一一个是改变使用ID属性并改用类。当整个用户界面在启动时加载时,可以共享和加载JS函数。但那些具有相同名称的全局变量呢?

任何建议都将不胜感激。

1 个答案:

答案 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。