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イベントハンドラーではありません。これは、オーバーレイがフェッチされる前にjQueryToolsが実行する関数にすぎません。Javascriptを使用すると、開発者は関数の実行時に「this」の意味を指定できます。そのため、jQuery Toolsの開発者は、関連性のあるものを指すようにするか、気にしませんでした(この場合、グローバルな「ウィンドウ」オブジェクトのエイリアスになります)。いずれにせよ、ドキュメント(http://flowplayer.org/tools/demos/overlay/external.html)には、トリガーとオーバーレイ要素の両方にアクセスする方法が記載されています。

経験則として、他の言語の「this」とは異なるため、現在のコンテキストでの意味を正確に理解していない限り、Javascriptで「this」を使用しないでください。

于 2010-07-30T03:18:47.080 に答える