Jquery点击回调
jquery click callback
我有一个由'click'处理程序触发的jquery函数:
$('#showDatesCheckbox').click(function(){
var table = $('#planningViewTable').find('tr');
if ($('#showDatesCheckbox').is(':checked')) {
table.find('.textDate').stop().animate({
"opacity": 1
}, 1000);
table.find('.inlineTextDate').stop().animate({
"opacity": 1
}, 1000);
}
else {
table.find('.textDate').stop().animate({
"opacity": 0
}, 1000);
table.find('.inlineTextDate').stop().animate({
"opacity": 0
}, 1000);
}
});
我想有一个ajax加载指示器动画,所以我需要它来显示点击触发时,隐藏操作完成时,所以我图回调但它似乎没有工作,当我设置如下:
$('#showDatesCheckbox').click(function(){
$('#planningView').mask('Loading...');
var table = $('#planningViewTable').find('tr');
if ($('#showDatesCheckbox').is(':checked')) {
table.find('.textDate').stop().animate({
"opacity": 1
}, 1000);
table.find('.inlineTextDate').stop().animate({
"opacity": 1
}, 1000);
}
else {
table.find('.textDate').stop().animate({
"opacity": 0
}, 1000);
table.find('.inlineTextDate').stop().animate({
"opacity": 0
}, 1000);
}
},
$('#planningView').unmask();
);
立即触发click
事件,持续时间为0,因此没有任何回调。
但是你正在使用的animate
,确实有一个持续时间,所以它有一个回调。你的回调函数应该在.animate
:
$('#showDatesCheckbox').click(function(){
$("#foo").animate({ opacity: 1 }, 1000, function(){
// your callback
});
});
但是你正在使用多个动画,所以我猜你想要你的回调函数被调用当所有这些动画完成"动画"。下面是我要做的:
$('#showDatesCheckbox').click(function(){
var callback_count = 2; // the number of animates you do before you want to actually call your callback function
var yourCallbackFunction = function(){
if(--callback_count <= 0){
// your callback
}
}
$("#foo").animate({ opacity: 1 }, 1000, yourCallbackFunction);
$("#bar").animate({ opacity: 1 }, 1000, yourCallbackFunction);
});
还有一件事你应该知道:调用.animate
来改变不透明度是伟大的,但如果你只改变不透明度,有一个方法只做这一点,也有一个回调:fadeIn()
和fadeOut()
。
试试这样做:
$('#showDatesCheckbox').click(function(){
$('#ajaxgif').fadeIn();
var table = $('#planningViewTable').find('tr');
if ($('#showDatesCheckbox').is(':checked')) {
table.find('.textDate').stop().animate({
"opacity": 1
}, 1000);
table.find('.inlineTextDate').stop().animate({
"opacity": 1
}, 1000);
}
else {
table.find('.textDate').stop().animate({
"opacity": 0
}, 1000);
table.find('.inlineTextDate').stop().animate({
"opacity": 0
}, 1000);
};$('#ajaxgif').fadeOut();
});
编辑:对不起,这将不工作,因为脚本将继续,而不是等到动画完成。如果答案是正确的,您必须使用animate()
相关文章:
- jquery Onclick函数带有导致双击的回调排序函数
- 将额外的参数传递给jquery.延迟回调
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- bookmarklet中的jQuery.getScript()进行回调,但没有成功执行插件
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 当使用命名函数作为jquery ajax成功回调时,我需要括号吗
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- 如何使用jQuery等待来自回调的异步调用
- jQuery post,访问responseType或回调中的响应
- jQuery AJAX错误回调未运行
- Mapbox,无法在jquery回调中设置GeoJSON
- jQuery load()回调导致POST而不是GET
- 在firefox中,使用jquery ajax不会调用错误和完整回调
- Jquery回调函数执行多次
- 在我的选项卡jquery ui创建后回调
- 将参数传递给动画回调jQuery
- jQuery插件回调-jQuery Boilerplate
- 淘汰dom操作后回调jquery函数
- JSONP 回调 - JQuery 和其他框架
- 无限滚动,回调jquery函数