2013-10-17 123 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()方法用于将事件处理程序直接附加到元素。 –

相关问题