0

在 Rails 项目中,我需要防止 link_to_remote 被双击。看起来 :before 和 :after 是我唯一的选择——它们分别被添加/附加到 onclick Ajax 调用中。但是,如果我尝试类似:

:before => "self.stopObserving()"

Ajax 永远不会运行。如果我在运行 Ajax 之后尝试它,但链接永远不会停止观察。

我见过的解决方案依赖于创建一个变量并阻止整个表单,但是此页面上有多个 link_to_remote 行,一次单击多个行是有效的 - 只是两次不同。在 link_to_remote 之外声明的每行一个变量似乎非常笨拙......

我最初没有使用原型,而是首先尝试使用纯 Javascript 来进行概念验证——但它也失败了:

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

只是在单击时发出警报-这里的 lambda 什么都不做?下一个更像是预期的目标,应该只在第一次提醒。但相反,它每次都会发出警报:

<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 回答