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")未定义

4

1 回答 1

3

简短的故事:如果您尝试访问触发覆盖的元素,请改用:

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

长话短说:在 DOM 事件处理程序中,“this”指的是触发事件的元素。onBeforeLoad 虽然不是 DOM 事件处理程序。它只是 jQuery 工具在获取叠加层之前执行的一个函数。Javascript 允许开发人员在执行函数时指定“this”的含义。因此,jQuery 工具开发人员要么让它指向相关的东西,要么不打扰(在这种情况下,它将是全局“窗口”对象的别名)。无论哪种方式,文档 ( http://flowplayer.org/tools/demos/overlay/external.html ) 都描述了如何访问触发器和覆盖元素。

根据经验,除非您确切知道它在当前上下文中的含义,否则不要在 Javascript 中使用“this”,因为它不同于任何其他语言中的“this”。

于 2010-07-30T03:18:47.080 回答