Jquery - необычные и обратные вызовы - PullRequest
8 голосов
/ 26 мая 2009

У меня проблема с fancybox.
Я хочу написать функцию, которая будет запускаться при открытии fancybox. Как и когда вызывать функцию?

Пример:

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
});

Ответы [ 7 ]

24 голосов
/ 26 мая 2009

Вместо myFunc() используйте myFunc. В javascript функция с паренсом (и / или аргументами) означает, что вы хотите вызвать ее. Имя функции без них означает, что вы просто хотите ссылку на эту функцию (что, вероятно, то, что fancybox хочет от вас)

10 голосов
/ 21 января 2011

Это работает

$("#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!');
    }
});
9 голосов
/ 09 сентября 2012

Самый новый способ заставить его работать - это использовать afterShow или beforeShow:

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

Я загружаю регистрационную форму через ajax, и мне нужно включить проверку формы. В обоих случаях (до и после) контент уже загружен.

3 голосов
/ 26 мая 2009

На самом деле, при проверке документов у вас есть опечатка в списке опций ...

У вас есть callBackOnShow, но оно должно быть callbackOnShow (нижний регистр b)

2 голосов
/ 26 мая 2009
'callbackOnShow': myFunc

нижний регистр b, так как параметры чувствительны к регистру, и в myFunc нет скобок, так как вы хотите передать функцию как опцию, а не вызывать ее.

2 голосов
/ 26 мая 2009

Должно быть: -

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
});
0 голосов
/ 26 июля 2013

Поскольку в вашем заголовке написано "Jquery - fancybox and callback", вы можете получить полный список параметров обратного вызова для плагина fancybox 2, который находится на вкладке обратных вызовов.

http://fancyapps.com/fancybox/#docs

Если вы используете старую версию fancybox, возможно, обновление до fancybox2, так как новый плагин обладает улучшенными функциями и большим контролем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...