我的主页面如下:
<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应用程序中同时打开多个客户页面。
答案 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);