我在网上搜索并没有找到解决方案
我需要在div上禁用click事件,然后写入文件,然后在div上启用click事件。
所以,我已经在div #method:
上切换了事件function openData(){
$.post("writeFile", {'file':fileWrite})
.done(function(data) {
$('#method').on('click',*);
});
}
$('#method').toggle(function(){
$('#method').off('click');
openData();
},function(){
... other similar stuff ...
});
我需要启用点击div #method ..这有效:$('#method')。on('click',callFunction);但我必须调用一些函数,所以我想调用$('#method')。on('click',$('#method')。toggle(function());
这可能吗? 是否可以单击div #method,如$('#method')。on('click'),它是否有效?
我会很乐意提供任何帮助。
答案 0 :(得分:0)
我不太明白你的问题,但是如果你想要你的div切换并完成其他的事情,你可以这样做:
var callFunction = function() {
doStuff();
}
$('#method').on('click', function() {
$('#method').toggle(callFunction);
}
或使用匿名函数:
$('#method').on('click', function() {
$('#method').toggle(function() {
doStuff();
});
}
所以也许你想要像
这样的东西var openData = function() {
$('#method').off('click');
$('#method').slideUp(function() {
$.post("writeFile", {'file':fileWrite})
.done(function() {
$('#method').slideDown(function() {
$('#method').on('click', openData);
});
});
});
}
$('#method').on('click', openData);
我更改了slideUp和slideDown的切换,因为我认为你真的不想切换,你想在等待时隐藏并准备就绪。
如果你想测试它,我创建了一个jsfiddle test,使用setTimeout来模拟ajax延迟。
答案 1 :(得分:0)
以下是我的理解方式。您可能还需要知道切换的状态以执行写入文件的事情,并考虑ajax遇到错误时的情况,但这里有一个简单的独家新闻(没有额外的绑定/取消绑定是非必需的):
var inProgress = false;
$('#method').bind('click', function () {
if (!inProgress) {
inProgress = true;
$('#method').toggle();
openData();
}
});
function openData(){
$.post("writeFile", {'file':fileWrite})
.done(function(data) {
inProgress = false;
});
}