0

Rails プロジェクトでは、link_to_remote がダブルクリックされないようにする必要があります。:before と :after が私の唯一の選択肢のようです - それらはそれぞれ onclick Ajax 呼び出しの先頭/末尾に追加されます。しかし、次のようなことを試してみると:

:before => "self.stopObserving()"

Ajax が実行されることはありません。試してみると、Ajaxが実行された後でも、リンクの監視が停止することはありません。

私が見た解決策は、変数を作成してフォーム全体をブロックすることに依存していますが、このページには複数の link_to_remote 行があり、一度に複数の行をクリックすることは有効です。同じ行を 2 回クリックすることはできません。link_to_remote の外で宣言された行ごとに 1 つの変数は非常に厄介なようです...

Prototype を使用する代わりに、この概念実証のためにプレーンな Javascript を最初に試しましたが、失敗しました。

<a href="#" onclick="self.onclick = function(){alert('foo');};">クリック</a>

クリックされたときにアラートを表示するだけです-ここのラムダは何もしませんか? この次の目標は、望ましい目標に近いものであり、初回のみ警告する必要があります。しかし、代わりに毎回警告します:

<a href="#" onclick="alert('bar'); self.onclick = function(){return false;};">クリック</a>

すべてのアイデアに感謝します!

4

1 に答える 1

0

私はこれをjQueryを使用して機能させました:

link.click(function() { 
  alert('foo'); 
  $(this).unbind('click'); 
  $(this).click(function() { 
    return false; 
  }); 
  return false; 
})

だから確かにあなたは普通の古いjavascriptで同じことを達成することができます。

jQueryでこれを行う利点は、このように動作させたいすべてのリンクにクラスを簡単に追加でき、application.jsでそのクラスのすべてのリンクにこの動作を割り当てることができることです。

もちろん、昔ながらのJavaScriptでもすべてを行うことができます...jQueryを使用すると簡単になります。

于 2010-12-23T15:51:11.817 に答える