jquery 新建的元素事件綁定問(wèn)題上一篇 / 下一篇 2008-10-20 21:40:00 / 個(gè)人分類(lèi):jQuery demo:http://www./demo/jquery頁(yè)面加載完成后元素綁定事件.html 我想很多人都會(huì)向我一樣曾經(jīng) 被新元素的事件綁定困惑很久也就是 js的事件監(jiān)聽(tīng)跟css不一樣,css只要設(shè)定好了樣式,不論是原來(lái)就有的還是新添加的,都有一樣的表現(xiàn)。而事件監(jiān)聽(tīng)不是,你必須給每一個(gè)元素單獨(dú)綁定事件。 常見(jiàn)的例子是處理表格的時(shí)候。每行行末有個(gè)刪除按鈕,點(diǎn)了這個(gè)能夠刪除這一行。 <table> <tbody> <tr> <td>這行原來(lái)就有</td> <td><buttonclass="del">刪除</button></td> </tr> <tr> <td>這行原來(lái)就有</td> <td><buttonclass="del">刪除</button></td> </tr> </tbody> </table> 通常,我會(huì)這么綁定
對(duì)于在domready之前就存在的刪除按鈕,一切都很完美。但如果在domready之后用js動(dòng)態(tài)添加幾行,那新增的幾行中的這些按鈕都將失去任何作用。 如何解決這個(gè)問(wèn)題?以下提供4種解決方案:
=============================
=============================
========================= 下 =================== demo:http://www./demo/jquery頁(yè)面加載完成后元素綁定事件.html 2號(hào)解決方案——事件冒泡法 利用事件冒泡的原理,我們給這個(gè)按鈕的祖先元素綁定事件處理函數(shù)。 然后通過(guò)event.target這個(gè)對(duì)象來(lái)判斷,這個(gè)事件是不是我們要找的對(duì)象觸發(fā)的。 通??梢岳靡恍〥OM屬性,比如event.target.className、event.target.tagName等之類(lèi)的來(lái)判斷。
=============================
============================= 具體選用哪一個(gè)方案,沒(méi)有定數(shù)。具體看你的項(xiàng)目以及你js還有結(jié)構(gòu)與行為分離的思想的掌握程度。最適合的才是最好的。 =============================
同樣,這段js也適用于如下的html結(jié)構(gòu)
相關(guān)閱讀: |
|
來(lái)自: CevenCheng > 《jQuery》