2010-07-30 102 views
1
<a id="cp-login" href="javascript:;" rel="#dialog" show="#login">登入</a> 

$("a[id^=cp-][rel]").overlay(
    {top: 120,mask: {color: '#67B300',loadSpeed: 200,opacity: 0.2}, 
    closeOnClick: false, 
    onBeforeLoad: function() { alert($(this).attr("id"))} 

}); 

alert($(this).attr("id")未定義jQuery的工具:如何獲取ID

想得很多。

回答

3

短篇小說:如果您嘗試訪問觸發疊加使用,而不是元素:

this.getTrigger().attr('id') 

長的故事:在一個DOM事件處理程序「這」指的是觸發因素事件。 onBeforeLoad雖然不是一個DOM事件處理程序。這只是jQuery Tools在獲取覆蓋之前執行的一個函數。 Javascript允許開發人員在執行某個功能時指定「this」的含義。所以jQuery Tools的開發人員要麼指向相關的東西,要麼不打擾(在這種情況下,它將成爲全局「窗口」對象的別名)。無論哪種方式,文檔(http://flowplayer.org/tools/demos/overlay/external.html)都描述瞭如何訪問觸發器和疊加層元素。

作爲一條經驗法則,不要在Javascript中使用「this」,除非您確切地知道它在當前上下文中的含義,因爲它與任何其他語言中的「this」不同。