1

在页面的js文件中,里面$(document).ready(function() {})我有

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

现在,班级学校的 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 助手依赖于原型;如果您已切换到 jQuery,Rails 的 javascript 帮助程序(例如 link_to_remote)可能无法正常工作。

于 2010-12-07T00:25:54.267 回答
0

link_to_remote works with the onclick attribute. Apparently these get called before any bind/live events are processed, so your preventDefaults happens too late.

In my case I just want to prevent the 'second' click on the link, so I just nulled the "onclick" attribute during the first 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 回答