0

我搜索了整个网络并没有找到解决方案

我需要禁用 div 上的点击事件,然后写入文件,然后启用 div 上的点击事件。

所以,我在 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());

这可能吗?是否可以只启用像 $('#method').on('click') 这样的 div #method 的点击并且它可以工作?

我会很高兴得到任何帮助。

4

2 回答 2

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 测试,使用 setTimeout 来模拟 ajax 延迟。

于 2013-02-14T16:20:30.323 回答
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;
    });
}
于 2013-02-14T20:41:26.117 回答