.delegate()不绑定到锚点元素标记

3
我正在尝试使用委托功能,但未成功,以下是我的HTML代码...
<td class="ms-vb-icon">
    <a tabindex="-1" href="/ACKNOWLEDGEMENT%20OF%20DEBT%20-%20SCOTLAND.doc"
                    onclick="return DispEx(this,event,'TRUE','FALSE','TRUE','SharePoint.OpenDocuments.3','0','SharePoint.OpenDocuments','','','','41','1','0','0x7fffffffffffffff')">
    <img border="0" alt="ACKNOWLEDGEMENT OF DEBT - SCOTLAND.doc" title="ACKNOWLEDGEMENT OF DEBT - SCOTLAND.doc" src="/_layouts/images/icdoc.gif"></a>
</td>

这是由SharePoint为我生成的,表中还有许多内容可能与我的问题有关,请参见这里获取完整列表。表格的html(id onetidDoclibViewTbl0)是在页面加载后通过ajax调用生成的。
我的尝试使用代理函数...
$('#onetidDoclibViewTbl0').delegate('tr td.ms-vb-icon a', 'click', function(event)  {
    alert(‘document anchor clicked’);
});

我甚至尝试了这个,但它也没有起作用。

$('body').delegate('a', 'click', function() {
    alert('this really should work?');
});

这是一个类似的问题 http://stackoverflow.com/questions/6993225/jquery-click-not-working-on-appended-dom/6993247#6993247 - Huske
2个回答

4
大多数链接都有一个onclick属性,其中包含“return false;”。这会阻止事件冒泡到DOM上,而delegate方法需要依赖DOM来正确执行。

1

你说得对...那应该是可以的。我把你的代码放到了jsFiddle上,看起来很好用。也许这与你使用的jQuery版本有关?delegate是比较近期才添加的...

此外,在运行代码时,body元素需要存在。最好像hunter建议的那样,在文档准备就绪的回调函数中包装它。


@Rob:是的,这对于演示问题非常方便,也意味着人们可以更容易地找到解决方案。 - Spycho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接