如何将回调函数传递给按钮?

时间:2014-04-08 14:50:15

标签: javascript jquery html5 fancybox

我有一个包含几个js文件的php项目。 其中一个js文件是一个弹出管理器。这是代码:

function openYesNoPopup(message, callback) {
$('.popupBtn').unbind();

var popup_top = "<div class = 'popup_top'></div>";
var popup_bottom = "<div class = 'popup_bottom'></div>";
var yesNoButtonsDiv = '<div class="popupBtnContainer"><button class="popupBtn" data-type="yes">Yes</button><button class="popupBtn">No</button></div>';

$.fancybox.open({
    padding: 0,
    content: message
});

$('.fancybox-skin').prepend(popup_top);
$('.fancybox-skin').append(popup_bottom);
$('.fancybox-outer').append(yesNoButtonsDiv);

$(document).on('click', '.popupBtn', function() {
    if ($(this).data('type') === 'yes') {
        callback;
    }
    $.fancybox.close();
});

}

问题是,我想要被激活的回调函数是未定义的。

任何人都可以帮助我做到这一点吗?

谢谢!


对openYesNoPopup的调用:

openYesNoPopup("Hello World",foo());

function foo(){
    alert("bear");
}

出于某种原因,警报会在开始时显示......

1 个答案:

答案 0 :(得分:1)

你必须真正称之为

if ($(this).data('type') === 'yes') {
    callback();
}

但是在调用openYesNoPopup功能时,您引用它,将其称为

openYesNoPopup("Hello World",foo);