1. 程式人生 > >jquery事件重複繫結

jquery事件重複繫結

動態的append新增的html程式碼,他所繫結的事件會失效

後面找到原因:是因為這些動態載入的這些HTML頁面是在列表資料頁面的HTML元素,css,js程式碼載入完後,再新增的HTML元素,

在瀏覽器解析到圖一的頁面元素時,解析到js的這些繫結標籤事件的js程式碼的時候,這些繫結事件的標籤元素還沒有生成,

(因為js程式碼載入完後,才會有這些繫結事件的標籤),所以這些JS程式碼的繫結的事件,根本就沒有繫結到這些動態載入的標籤上,所以事件不會觸發。

解決方法:

$(selector).delegate(childSelector,event,data,function)

引數

描述

childSelector

必需。規定要附加事件處理程式的一個或多個子元素。

event

必需。規定附加到元素的一個或多個事件。

由空格分隔多個事件值。必須是有效的事件。

data

可選。規定傳遞到函式的額外資料。

function

必需。規定當事件發生時執行的函式。

但是此專案侷限太大,無法這樣修改,所以將需要繫結的部分封裝成一個函式,待程式碼新增後再次執行一次,也就是重新繫結事件,但是jquery繫結事件不會覆蓋已經有的事件,而是重複新增事件,所以每次新增時間是需要解綁然後在繫結事件

關於jquerytext()方法

例如有這樣的html結構


獲取每個span裡面的文字,我首先想到的是console.log($(

'.box .title').text())

然而得到的結果雖然是 常規課時連自習,但是這個陣列的長度卻不是2,而是7,每一個字就是一個數組元素,

text()方法只有準備的定位到元素上才能獲取到文字

console.log $('.box .title'))輸出後發現是物件陣列。


於是這樣獲取到了文字

console.log($('.box .title')[0].innerHTML)或者這樣$('#' + i + ' .title').text()通過精準的獲取後,才正常顯示了文字。