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 のトグルを変更しました.

テストしたい場合は、 setTimeout を使用して ajax 遅延をシミュレートするjsfiddle テストを作成しました。

于 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 に答える