用于切换的回调函数,似乎在切换完成之前执行

时间:2012-12-11 10:05:59

标签: jquery html

我正在为我的toggle做回调,它似乎在toggle完成之前执行。有什么我可以做的来防止这种情况吗?或者我只是“反转”我的if

jsfiddle:DEMO

$('#toggle_now').change(function () {
    $('#show_me').toggle(!this.checked, callBack());
}).change();

function callBack() {
    var $this = $('#show_me');
    if (!$this.is(':visible')) {
        $('#span_me').html('visible');
    } else {
        $('#span_me').html('hidden');        
    }
}

编辑:
我需要关闭ShowAndHide选项,我可以在不创建一个持续收听切换的新功能的情况下实现callback function吗?

3 个答案:

答案 0 :(得分:1)

您正在绑定对函数的调用而不是函数本身。改为:

.toggle(!this.checked, callBack); //no parentheses
编辑:实际上还有另一个问题;接受boolean参数时,.toggle方法不起作用。相反,删除第一个参数并反转if

http://jsfiddle.net/5R7Nf/3/

答案 1 :(得分:0)

像这样使用:

$('#toggle_now').change(function () {
    $('#show_me').toggle(!this.checked, callBack);
}).change();

答案 2 :(得分:0)

首先,在切换时使用“ showOrhide ”选项时,它有无回调 !!!

你需要一个持续时间,因为这是切换功能唯一的异步时间:

$('#toggle_now').on('change', function () {
    $('#show_me').toggle(this.checked);
    $('#span_me').html($('#show_me').is(':visible') ?  'visible' : 'hidden');
}).change();​

不需要回调,因为html()函数在toggle()函数完成之后才会执行。

FIDDLE