1

ページのjsファイルの中に、$(document).ready(function() {})私が持っている

$(".school a").live("click", function (e){ 
  e.preventDefault();
  ....;
  jsFunc(param1, param2, param3);
});

これで、class school の div に、rails link_to_remote によって生成された:url, :action, :before, :html.

このリンクをクリックすると、link_to_remote に関して行うべきことはすべて実行されますが、何らかの形で document.ready の onclick イベントが関連付けられません。なぜこれが起こるのでしょうか?jsFunc は非同期的に URL に投稿する:beforeだけです。link_to_remote の投稿 URL を詰め込むとうまくいくことがわかりましたが、アタッチ機能を使用できるよりエレガントな方法はありますか

4

2 に答える 2

0

link_to_remoteはonclick属性で機能します。どうやら、これらはバインド/ライブイベントが処理される前に呼び出されるため、preventDefaultsの発生が遅すぎます。

私の場合、リンクの「2回目の」クリックを防ぎたいので、最初のクリック時に「on​​click」属性を無効にしました。

/* not (yet) well tested */
function doubleClickhandler(event) {
  var t = $(event.target);

  if (t.data("clicked")) {
    event.preventDefault();
  } else {
    t.data("clicked", true);
    if (t.attr("onclick")) {
      /* forcefully remove onclick handler */
      t.attr("onclick", "");
    }
  }
}

function setupdoubleClickHandlers() {
  $("a.doubleclick").each(function () {
    var el = $(this);
    el.removeClass("doubleclick"); /* prevent multiple setups */
    el.bind("click", doubleClickhandler);
  });
}

jQuery(document).ready(function($) {
  setupdoubleClickHandlers();
  $(document).bind('reveal.facebox updatedfacebox', function() {
    setupdoubleClickHandlers();
  });
});
于 2011-09-13T14:45:37.620 に答える
0

link_to_remote ヘルパーは Prototype に依存していると思います。jQuery に切り替えた場合、link_to_remote などの Rails の JavaScript ヘルパーが機能しない可能性があります。

于 2010-12-07T00:25:54.267 に答える