2012-08-16 68 views
1

我遇到了一個問題,我從AJAX源加載3個DIV。返回的HTML看起來有點像:來自AJAX加載內容的重複元素ID

<div> 
    <label for="firstName">First Name</label> 
    <input id="firstName" name="firstName".... 
</div> 

所以想象這個塊在相同的DOM中重複3次。問題是當我點擊第三個加載的DIV中的標籤時,它突出顯示了第一個加載的DIV中的文本框。所以,現在我所擁有的是3個HTML塊,其中ID是衝突的。

有沒有人知道任何解決此問題的方法?

謝謝。

+0

[這](HTTP:// www.w3.org/TR/selectors/#nth-child-pseudo)可能會有所幫助。 – alm 2012-08-23 15:48:43

+0

感謝您的建議。 CSS選擇對我來說不是問題。問題是當您在標籤上指定「for」屬性時瀏覽器的默認行爲。我無法在這種情況下使用該屬性,因爲我無法控制告訴瀏覽器哪個元素專門用於製作標籤,在重複的元素塊中。 – 2012-08-24 09:47:27

回答

3

它不符合標準有多個元素具有相同的ID。因此,Firefox的行爲方式是一種,而Chrome則以另一種方式行事。

一種方法是修改從AJAX源加載的ID。你可以有一個佔位符ID中像id="UNIQUE_id"然後用.html().replace(/UNIQUE_/g,something_unique));其中something_unique可能只是一個連續遞增的數...

+0

這是一個好主意,謝謝!我只能追加日期/時間。 – 2012-10-05 18:56:33

+1

:)日期/時間的作品。 'something_unique ++' – 2012-10-05 21:46:27

+1

因爲CSS/JS應用於依賴於ID的元素,所以這個想法在我嘗試將其付諸實踐時並未實現。關於這個彼得的任何其他想法? – 2012-10-23 14:49:37