注:我有一個解決這個問題的方法,但我更喜歡用逗號分隔值,而不是用空格分隔它們(這是我的解決方法)。jQuery修剪和刪除父休息兒童事件
我有一個ASP.NET網站,允許教師從預設註釋的DropDownList中進行選擇,並將這些註釋應用到學生的課堂中。我在GridView中顯示學生和註釋,並使用Label顯示數據庫中已存在的任何註釋(將它們從流程中的DropDownList中移除)。當教師選擇其中一個註釋並點擊一個按鈕時,我的jQuery功能:
- 將所選值和文本拉出選項(假設它不是默認選項)。
- 檢查Label.children()。length,並在文本大於零時向文本附加「,」。
- 使用包含值和文本的隱藏字段創建
<span>
標記。 - 追加範圍內的文字。
- 關閉跨度。
- 附加一個onclick事件到跨度。
- 從DropDownList中刪除原始選項。
span標記的onclick事件與我上面描述的相反 - 它將值和文本拉出並重新創建下拉菜單中的選項。此外,它還會在父標籤中將「,」替換爲「,」。我發現,當我將這些字符串(位於跨連接的onclick事件之外的字符串)替換爲onclick事件消失時。我很熟悉.live(),但是由於GridView中的每一行都包含對當前正在使用的特定學生和類的唯一引用,所以我無法知道每行需要傳入的值功能提前。除了我描述的解決方法或重新附加onclick事件之外,是否有解決此問題的方法?
我很喜歡這個想法。當然比我的字符串解析方法更容易。儘管如此,我還是想知道爲什麼從父項中刪除文本打破了兒童事件。 – jwiscarson 2010-10-07 14:48:04
很難準確地說,沒有看到你的代碼。我的猜測是,你正在做的一些方面是破壞和重新創建DOM元素,從而刪除事件綁定。 – Ender 2010-10-07 15:18:21
如果(destinationDropDown.children())存在由於發佈可怕的jQuery而使自己陷入尷尬的風險,那麼您現在是: 函數DeselectComment(studentSid,value){ if(destinationDropDown.children()。長度== 1){ destinationDropDown .append(''); var parentSpan = sourceSpan.parent(); sourceSpan.remove();如果(parentSpan.text()。search(',')== 0){ parentSpan.html(parentSpan.html()。replace(',','')); } parentSpan.html(parentSpan.html()。replace(',',',')); } – jwiscarson 2010-10-07 21:02:41