2013-10-17 121 views
0

使用jquery的我的綁定方法有什麼問題?爲什麼jquery.bind()在這種情況下不起作用?

工作

var Element = htmlBody.find('tag'); 
$(Element).bind('DOMSubtreeModified', function(event) { 
    console.log(Element[0]); 
    //code come here 
}); 

不工作

var obj = {}; 
var tags = ['tag1', 'tag2']; 
for (index in tags) { 
    obj[index] = htmlBody.find(tags[index]); 
    $(obj[index]).bind('DOMSubtreeModified', function(event) { 
     console.log(obj[index][0]); 
     // code doe not come here 
    }); 
} 
+0

您不應該使用'for ... in'來迭代數組。在你的情況下,你可能正在觸及它的「長度」屬性。改用計數器變量。 –

+0

嘗試使用$ .each()/ iterate使用臨時變量 –

+0

DOMSubtreeModified事件已被棄用。點擊此處獲得更多信息:http://stackoverflow.com/questions/6659662/why-is-the-domsubtree修飾-event-deprecated-in-dom-level-3 –

回答

1

嘗試以下操作:

var obj = {}; 
var tags = ['tag1', 'tag2']; 
$.each(tags, function(idx, item) { 
    obj[idx] = htmlBody.find(tags[idx]); 
    $(obj[index]).bind('DOMSubtreeModified', function(event) { 
     console.log(item); 
    }); 
}); 
+1

謝謝你的回答 – androidraj

+0

@androidraj不客氣! – Flea777

1

建議使用on函數,而不是bind()。您還需要使用for循環遍歷元素。

var obj = {}; 
var tags = ['tag1', 'tag2']; 
for (var i = 0; i < tags.length;i++) { 
    obj[i] = htmlBody.find(tags[i]); //not exactly sure what htmlBody.find does 
    var item = obj[i][0]; 
    $(obj[i]).('DOMSubtreeModified', function(event) { 
     console.log(item); 
    }); 
} 
+0

小心在回調中關閉變量'i' –

+0

@ArunPJohny謝謝,我錯過了。 –

+0

從jQuery 1.7開始,.on()方法是將事件處理程序附加到文檔的首選方法。對於早期版本,.bind()方法用於將事件處理程序直接附加到元素。 –

相關問題