2017-01-01 71 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);