jquery调用切换事件

时间:2013-02-14 15:41:07

标签: jquery

我在网上搜索并没有找到解决方案

我需要在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'),它是否有效?

我会很乐意提供任何帮助。

2 个答案:

答案 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;
    });
}