2011-08-10 40 views
3

我試圖使用委託功能,而不是成功的,這裏是我的html ....delegate()不具約束力錨元素標籤

<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對我產生的,還有很多更在表中這可能是我的問題的一個因素,請參閱here完整列表。表格(id爲onetidDoclibViewTbl0)的html在頁面已加載後生成;通過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?'); 
}); 
+0

這裏是一個類似的問題http://stackoverflow.com/questions/6993225/jquery-click-not-working-on-appended-dom/6993247#6993247 –

回答

4

你的大部分鏈接都具有return false;的onclick屬性。這可以防止事件冒泡DOM,delegate方法依賴於該DOM來正確運行。

1

你是對的......這真的應該工作。我把你的代碼放在jsFiddle中。這似乎工作正常。也許它與你正在使用的jQuery版本有關?代表相對最近被添加...

此外,body元素將需要存在於運行代碼的位置。你可能最好不要像獵人所建議的那樣,把它包裝在一個文件準備好的回調中。

+0

ooh jsFiddle酷! – Rob

+0

@Rob:是的,這對演示問題非常方便,這意味着人們可以更輕鬆地找到解決方案。 – Spycho