我有共同的jQuery功能和兩個div標籤。這兩個div標籤有不同的名稱,但都包含相同ID的元素,現在我想爲他們使用這個常見的JQuery功能? 我已經實現了常用功能,但它不適用於兩者。如何使用常見的js函數來創建兩個相同id的div元素?
這裏是鏈接到我的jsfiddle -jsfiddle.net/xS7zF/1/
在我的jsfiddle有兩個div標籤即示例1和示例2和兩個標籤具有相同ID的元素。函數對第一個div的工作正常,但對第二個工作不正常。
請幫我解決這個問題。
我有共同的jQuery功能和兩個div標籤。這兩個div標籤有不同的名稱,但都包含相同ID的元素,現在我想爲他們使用這個常見的JQuery功能? 我已經實現了常用功能,但它不適用於兩者。如何使用常見的js函數來創建兩個相同id的div元素?
這裏是鏈接到我的jsfiddle -jsfiddle.net/xS7zF/1/
在我的jsfiddle有兩個div標籤即示例1和示例2和兩個標籤具有相同ID的元素。函數對第一個div的工作正常,但對第二個工作不正常。
請幫我解決這個問題。
呀,引擎蓋下,jQuery的上一個選擇ID將使用由瀏覽器實現的Document.GetElementById()函數,該函數非常快速,但是(我猜取決於瀏覽器)在找到第一個元素之後會停止,因爲ID應該是唯一的,並且不需要進一步搜索第一個被發現。
例如,將id =「eb」的div重命名爲class =「eb」,並且仍然可以使用$(「#example1 .eb」)和$(「#example2 .eb」)
UPDATE: 使用新的小提琴我創造了這個:http://jsfiddle.net/xS7zF/5/
我清理了大量的代碼,並希望你能看到我做了什麼。我改變了從id到class兩次出現的所有元素。現在,當您使用$(".classname").click()
將事件附加到元素時,它會附加到所有元素。在你設置HTML的處理程序函數中,你可以使用它的ID來定位一個特定的元素,但是你發現它是相對於執行事件的元素的。您可以使用parent(),parentsUntil(),next(),find()等來完成此操作。查看jQuery文檔以瞭解所有可能性。因此,例如,change-handler附加到名稱= Assets的所有輸入。但是,不要使用$(「#b1」)。show(),而是使用$(this).parent()觸發特定輸入的父項。然後,我找到一個class =「。b1」的元素,它只會找到這個特定輸入旁邊的元素,並將HTML設置爲該元素。
由於還有其他輸入,當輸入發生變化時會發生相同的操作,但它會發現IT的父項,並找到IT旁邊的class =「。b1」的元素。因此,包含輸入的兩個div都包含在內,因爲它們相對於自身而不是文檔上的元素進行操作。
爲了獲得更多樂趣,並向您展示這種編程方式是多麼靈活,這裏有一個Javascript代碼不變的小提琴,但是它有8次完全相同的問題div。不管你重複多少次,相同的代碼將作用於你創建的儘可能多的div,因爲一切都是相對的。 http://jsfiddle.net/xS7zF/7/
希望這會有所幫助,其餘的由您決定!
沒有得到你的觀點你可以在小提琴中實現它 –
我很樂意,但你有一個令人難以置信的大提琴,看起來它幾乎是你的整個應用程序,我需要通過所有你的代碼。如果你可以把它縮小到基本的我可以看看... –
在這裏,我直接指導基本的小提琴查詢。 http://jsfiddle.net/xS7zF/2/ –
ID必須是唯一的,你不應該重複它們。您可以用class替換id,並在jQuery函數中使用(".ub").each()
或使用eq(x)
手動引用該對象。例如(".ub").eq(1).
我將嘗試這一點,但不是在的jsfiddle正常工作,它可以詳細闡述,或提高我的jsfiddle如果可能的話 –
你不應該分配相同的id到不同的元素。 你CAN但你不應該。而不是提供相同的ID,使用類別
ID必須是唯一的,請嘗試修復此問題,更改爲類。 你可以嘗試這樣的事情:的
$("div div:first-child")
代替
$("#eb")
但是取決於你的頁面代碼的其餘部分的。所以,首先轉換到類和使用
$(".eb")
可以請你實現對JS-FIDLE相同的代碼:的jsfiddle。 net/xS7zF/1 /如果可能的話 –
時的jQuery/JavaScript的發現它會忽略其他的第一個ID,請閱讀更多關於它 http://www.w3schools.com/tags/att_global_id.asp
代替__id__使用__class__否則只有第一項將被選中 –