我有一些這樣的標(biāo)記(類只是為了說明):<ol id="root" class="sortable"> <li> <header class="show-after-collapse">Top-Line Info</header> <section class="hide-after-collapse"> <ol class="sortable-connected"> <li> <header class="show-after-collapse">Top-Line Info</header> <section class="hide-after-collapse"> <div>Content A</div> </section> </li> </ol> </section> </li> <li> <header/> <section class="hide-after-collapse"> <ol class="sortable-connected"> <li> <header/> <section class="hide-after-collapse"> <div>Content B</div> </section> </li> </ol> </section> </li></ol>也就是說,嵌套可排序列表。可排序的插件就足夠了,因為盡管內(nèi)部列表已連接,但每個li(以下稱“ item”)都保持其級別。這些項目具有始終可見的標(biāo)題和在展開狀態(tài)下可見的部分,可通過單擊標(biāo)題來切換。用戶可以隨意從任一級別添加和刪除項目。添加頂級商品將在其中包含一個空的嵌套列表。我的問題是關(guān)于新創(chuàng)建項目的JS初始化:雖然它們將共享一些通用功能,但我可以通過$("#root").on("click", "li > header", function() { $(this).parent().toggleClass("collapsed");});和li.collapsed section { display: none;}(旁聽的問題:這是使用details / summary HTML5標(biāo)簽的合適位置嗎?對于這些標(biāo)簽是否甚至可以將其納入最終規(guī)范似乎有些懷疑,我想進(jìn)行一次滑動過渡,所以似乎我想無論如何都需要JS。但是我把這個問題扔給了大眾。你好,大眾。)如果根列表是保證在頁面加載時存在的唯一(相關(guān))元素,則.on()才能有效工作,我必須將所有事件綁定到該元素,并為每個事件拼出精確的選擇器,因為明白它。因此,例如,要將單獨的功能綁定到彼此相鄰的兩個按鈕上,我每次必須完整拼出選擇器,$("#root").on("change", "li > section button.b1", function() { b1Function();}).on("change", "li > section button.b2", function() { b2Function();});準(zhǔn)確嗎?在這種情況下,在將新項目添加到頁面時放棄.on()并綁定我的事件是否更有意義?如果響應(yīng)有所不同,則項目總數(shù)最多可能會打幾十個。
向頁面添加復(fù)雜元素時的事件委托與直接綁定
慕絲7291255
2019-11-19 10:06:15