我有一个委托(delegate)声明,其工作原理如下:
$("body").delegate("tr[type='option']",'mouseenter',function(){
问题是它从我不想要的表中获取元素。所以我尝试了:
$("body").delegate("table[class='ms-MenuUI'] > tr[type='option']",'mouseenter',function(){
这根本不起作用(尽管我没有收到任何控制台错误)。只是想知道如何加强这一点,以便它只从我想要的特定表中获取表行。
注意:页面加载时,该表不存在于 DOM 中,并且在文档准备好后动态创建/销毁,因此需要委托(delegate)。
编辑: 根据我下面的评论,我使用 [] 是因为父级的属性是可变的,并且我的理解是它们应该与属性简写(即“.”)互换使用。动态代码示例如下:
$('body').delegate('table[' + parentAttribType + "='" + parentAttribValue + "'] > tr[" + rowAttrbType + "='" + rowAttribValue + "']"), 'mouseenter', function(){
谢谢!
最佳答案
使用此功能,事件处理程序将使用“tr td”作为其事件目标绑定(bind)到表。
$('table[class=ms-MenuUI]').delegate('tr td', 'mouseenter', function() {
});
仅供引用-
如果您要使用 $('body').delegate('', )
那么最好使用 .live()无论如何,它将事件处理程序绑定(bind)到文档级别。
编辑:抱歉没有阅读您的整个帖子,请将事件委托(delegate)给包含表格的元素,或使用 .live()。
关于javascript - 尝试向 delegate() 添加层次结构约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4018021/