2

これが状況であり、以前にこれについて尋ねたことがありますが、まだ希望どおりに機能していません。

AJAX 呼び出しを行い、その情報をモーダル ダイアログに表示するクリック イベントに関連付けられた複雑な関数があります。

私の例では jQuery モバイルを使用していますが、jQuery モバイルを使用するモバイルと jQuery を使用しないデスクトップの両方があるため、ネイティブ JavaScript を介して動作させる必要があります。これは私が望んでいるものではありませんが、私の手に負えないことでもあります。

したがって、このJSFiddleで私の例を見ることができます。この例では、タイムアウトを使用して、発生している問題をシミュレートしています。リンクを複数回クリックすると、イベントが複数回発生します。私はその行動を防ぐ必要があります。イベントリスナーと他のいくつかのものを削除しようevent.preventdefaultとしましたが、onclickを再接続することさえできないようです。そのため、ダイアログが閉じられると、ユーザーはそのリンクを再利用することはできなくなります。可能であれば、このダイアログがレンダリングされる方法のために、これをすべて単一の関数にまとめたいと思います。

シンプルでエレガントな解決策を探していますが、この問題の適切な解決策を思いつくのに苦労しています。

誰でもいくつかの解決策を提供できますか?

4

2 に答える 2

0

フィドルを更新しました。基本的には、クリックされたらonclickハンドラーを削除し、終了後に再度追加します

function callDialog() {
    console.log("been clicked");
    var anchor = document.getElementById("dosomethinganchor");           
    anchor.onclick = null;       // remove onclick function
    setTimeout(function () {
        anchor.onclick = callDialog;   //  got response back, make sure we add onclick back
        showDialog();
    }, 1000);
}  

http://jsfiddle.net/rvuZ6/8/

于 2013-05-29T02:44:19.347 に答える