2017-01-01 46 views
0

在相同的HTML页面多次加载后的页面是活动我有一个主要的页面,看起来像这样:问题identifing同一文档

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

我使用AJAX动态加载内容1和来自同一个文件的content2(比如Content.aspx)。 。

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

由于在内容1和内容2共享元素的id的HTML,jQuery的总是发现内容1部分:

$( “#content_data”)VAL();

但是,如果我用的是父母的div我能得到我想要的数据:。

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

问题:

给定一个Content.aspx页面,该页面(在客户端)怎么能知道它是div容器是什么吗?

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

如果我可以得到一个元素的持有人,我可以查询它的父母,并确定它在哪个内容div,但我不能得到那么远,因为得到一个元素,我需要使用jquery,它总是发现第一个内容div中的元素。所以客户端我从一开始就不知道我在哪里。

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

另一个我想到的方法是让multipe content.aspx页面,content1.apsx,content2.aspx等等...每个都相同,但是根据它的序号位置使用唯一的元素id。

我觉得这样会更安全,但需要更多的维护,以便随着事情的变化保持所有页面的同步。

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

+1

如果ID是问题,那么使用类,如果这就是问题的/问题是关于 –

+0

这是错误的$(“#content1”)。find(“#content_data”)。val();从片段中,content_data在内容中不是content1 – Bindrid

+0

好吧,它是一个难以解释的问题,我遇到的问题是在页面加载完成页面工作(例如加载数据)之后运行的JavaScript,不'知道'它应该在哪个页面上工作。 javascript对于所有页面都是通用的,即使我将它包含在单独的页面中也是如此。 – kpg

回答

0

虽然犹豫回答我自己的问题,这是我使用的解决方案,它的工作原理,它并没有遭受我尝试维持当前活动页面的外部指示器时遇到的任何陷阱时间问题,当阿贾克斯负载缓慢,用户点击加载另一个内容分区...

我的解决方案是有一个独特的网页/ JavaScript的每个div,但由于页面/ JavaScript是100%相同,除了ID (和数据模型)我只在服务器上维护页面的一个副本,头部包含javascript(以方便访问),并且所有标识符都后缀有一个唯一关键字,该关键字在文本上由父项的顺序索引替换div对ajax的成功。

所以,我的内容网页看起来是这样的:

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

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

然后在阿贾克斯成功:

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