1

我正在为我的 做一个回调toggle,它似乎在完成之前执行toggle。我可以做些什么来防止这种情况发生吗?还是我只是“扭转”我的if

jsfiddle:演示

$('#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');        
    }
}

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

4

3 回答 3

1

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

.toggle(!this.checked, callBack); //no parentheses

编辑:实际上还有另一个问题;接受参数时,该.toggle方法不起作用。boolean相反,删除第一个参数并反转您的if

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

于 2012-12-11T10:07:45.690 回答
0

像这样使用它:

$('#toggle_now').change(function () {
    $('#show_me').toggle(!this.checked, callBack);
}).change();
于 2012-12-11T10:07:52.273 回答
0

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

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

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

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

小提琴

于 2012-12-11T10:07:53.860 回答