我正在为我的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
吗?
答案 0 :(得分:1)
您正在绑定对函数的调用而不是函数本身。改为:
.toggle(!this.checked, callBack); //no parentheses
编辑:实际上还有另一个问题;接受boolean
参数时,.toggle
方法不起作用。相反,删除第一个参数并反转if
:
答案 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()
函数完成之后才会执行。