在同一文档中多次加载相同的html页面后识别哪个页面处于活动状态的问题

时间:2017-01-01 20:04:56

标签: jquery html asp.net

我的主页面如下:

<div id="main">
  <div id="content1"/>
  <div id="content2"/>
</div>

我使用ajax从同一个文件(比如Content.aspx)动态加载content1和content2。

<div id="content">
  <input id="content_data" type="hidden" value="whatever"/>
</div>

由于content1和content2中的html共享元素id,因此jquery始终会找到content1元素:

$( “#content_data”)VAL();

但是,如果我使用父div,我可以得到我想要的数据:

$( “#内容1”)找到( “#content_data”)VAL();

问题:

给定一个Content.aspx页面,页面(在客户端)如何知道它是哪个容器div?

在Page_load(服务器端)我知道页面索引,我可以保存在页面上的隐藏字段中,但在客户端,当我运行jquery来获取隐藏索引时,我不知道要查找哪个父div - 除非我忽略了某些事情(非常可能),否则这是一个陷入困境的情况。

如果我可以获取一个元素,我可以查询它的父级并确定它所在的内容div,但是我不能那么远,因为要获取一个元素我需要使用jquery并且它总是找到元素在第一个内容div中。客户方面我从一开始就说不清楚我在哪里。

首先,这是一个很好的方法来实现我想要的,两个或更多的div加载相同的页面(但不同的数据)存在于同一个文件中?

我想到的另一种方法是使用multipe content.aspx pages,content1.apsx,content2.aspx等等...每个相同但基于其序数位置的唯一元素id。

我觉得这会更“安全”,但需要更多维护才能让所有页面保持同步。

如果您想知道,我想要完成的具体用例是在一页的Web应用程序中同时打开多个客户页面。

1 个答案:

答案 0 :(得分:0)

虽然对于回答我自己的问题犹豫不决,但这是我正在使用的解决方案,并且它可以工作,并且它没有遇到任何陷阱,我试图维护当前活动页面的外部指标,这很容易出现时间当ajax加载缓慢且用户点击加载另一个内容div时出现问题...

我的解决方案是为每个div提供一个唯一的页面/ javascript,但由于页面/ javascript除了id(和数据模型)之外100%相同我在服务器上只使用javascript维护页面的一个副本包含在头部(为了便于访问),并且所有标识符都带有一个唯一关键字,该关键字在ajax成功时由父div的ordnal索引文本替换。

所以我的内容页面如下:

<head>
  <script>
    kendo.bind($("#clientUNIQUE"), clientViewModel[UNIQUE]);    
  </script>
</head>

<body>
  <div id="clientUNIQUE">
    content here
  </div>
</body>

然后关于ajax的成功:

result = result.replace(/UNIQUE/g, ndx);
$("#content" + ndx).html(result);