JQuery инструменты: как получить идентификатор - PullRequest
1 голос
/ 30 июля 2010
<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") не определено

1 Ответ

3 голосов
/ 30 июля 2010

Короткая история: Если вы пытаетесь получить доступ к элементу, вызвавшему наложение, используйте это вместо:

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

Длинная история: в обработчике событий DOM «this» относится к элементу, который вызвал событие. onBeforeLoad не является обработчиком событий DOM. Это просто функция, которую jQuery Tools выполнит перед извлечением оверлея. Javascript позволяет разработчику определять значение «this» при выполнении функции. Таким образом, разработчики jQuery Tools либо указали на что-то важное, либо не стали беспокоиться (в этом случае это был бы псевдоним для глобального объекта "окна"). В любом случае в документации (http://flowplayer.org/tools/demos/overlay/external.html) описано, как получить доступ как к триггеру, так и к наложенному элементу.

Как правило, не используйте "this" в Javascript, если вы не знаете точно, что это означает в текущем контексте, потому что это не похоже на "this" в любом другом языке.

...