8

ファンシーボックスに問題があります。
ファンシーボックスが開いたときに実行される関数を書きたいと思います。関数を呼び出す方法とタイミング

例:

function myFunc() {
    alert("Opened!");
}

$('.content a').fancybox({ 
    'hideOnContentClick': false ,
    'callBackOnShow': myFunc(), // This not working! It call function when page is loaded
    'frameWidth': 920,
    'frameHeight': 530
});
4

7 に答える 7

24

myFunc()使用する代わりにmyFunc。JavaScript では、括弧 (および/または引数) を持つ関数は、それを呼び出したいことを意味します。それらのない関数名は、その関数への参照が必要であることを意味します(これはおそらくfancyboxがあなたに望んでいるものです)

于 2009-05-26T12:39:25.900 に答える
10

それを機能させるための最新の方法は、afterShowまたはbeforeShowを使用することです。

$("a#registrace").fancybox({
  beforeShow   : function() {
    alert('its working!');
    validate_reg_form();
  }
});

ajaxを介して登録フォームを読み込んでいますが、フォーム検証を有効にする必要があります。どちらの場合も(前と後)、コンテンツはすでにロードされています。

于 2012-09-09T13:13:16.613 に答える
10

これは機能します

$("#element").fancybox({
    onStart     :   function() {
        return window.confirm('Continue?');
    },
    onCancel    :   function() {
        alert('Canceled!');
    },
    onComplete  :   function() {
        alert('Completed!');
    },
    onCleanup   :   function() {
        return window.confirm('Close?');
    },
    onClosed    :   function() {
        alert('Closed!');
    }
});
于 2011-01-21T18:39:53.960 に答える
3

実際、ドキュメントを確認すると、オプションリストにタイプミスがあります...

あなたは持っていますがcallBackOnShow、そうあるべきですcallbackOnShow(小文字のb)

于 2009-05-26T13:08:05.217 に答える
2

そのはず:-

function myFunc() {
    alert("Opened!");
}

$('.content a').fancybox({ 
    'hideOnContentClick': false ,
    'callBackOnShow': myFunc, // no brackets
    'frameWidth': 920,
    'frameHeight': 530
});

または、匿名関数を作成できます...

$('.content a').fancybox({ 
    'hideOnContentClick': false ,
    'callBackOnShow': function() { alert('hello'); },
    'frameWidth': 920,
    'frameHeight': 530
});
于 2009-05-26T13:04:37.173 に答える
2
'callbackOnShow': myFunc

オプションでは大文字と小文字が区別されるため、小文字の b を指定します。関数を呼び出すのではなく、オプションとして渡したい場合は、myFunc に括弧を付けません。

于 2009-05-26T13:11:11.170 に答える