0

在我的脑海里

<script src="/assets/application.js?body=1" type="text/javascript"></script>

在我的身体里

<a href="remove_fields(this)">xremove</a>

在我有的js中

function remove_fields(link) {
  ...
}

单击我得到的 xremove 链接

No route matches [GET] "/recipes/1/remove_fields(this)"

怎么了 ?

编辑 - 为简单起见更新了问题

4

3 回答 3

1

不要使用内联 JavaScript。这完全违背了已知的最佳实践。

改用事件处理程序:

<a href="#" id="link">

<script>
document.getElementById('link').onclick = function() {
    // do whatever you want
}
</script>
于 2012-06-09T19:58:51.477 回答
1

看起来 Rails 正在为您的 onclick 生成无效的 Javascript 调用。函数调用有没有参数的逗号,这意味着 Rails 试图为这些参数输入的任何数据都必须为空。

检查你的 Rails 模板,看看它试图在那里填充什么。

更新:既然你改变了你的问题,这里有一个新的答案:

您不能直接在 href 中引用 javascript。您必须在函数调用前面附加“javascript:”,否则将其放入 onclick 处理程序中。

于 2012-06-09T20:14:10.300 回答
1

作为上述完全有效答案的替代方案,通过首先包含 Google CDN 托管的缩小库来利用 jQuery API 的极端简化:

<script type="text/javascript" 
   src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

然后就像上面一样(但 jQuery 风格),更简单的 IMO:

<a href="#" id="link">

<script type="text/javascript">
$("#link").click(function (event)
{    
    // Handle event here. This code will be executed whenever event is triggered
    // ie. whenever you click the element with id link
});

我是一个经验不足的 Web 程序员,对函数式/解释型语言(如 javascript)的最佳实践的了解几乎没有我在本机领域(如汇编、C++、Java)的知识。但是,当您仅比较上面给出的答案的可写性/可读性和此处的 jQuery 版本时,我可以肯定地看到为什么 jQuery 如此受欢迎,即使在微软和谷歌等大型科技公司中也是如此。如果可以的话,我会坚持下去。

这是关于 .click() 方法的优秀 jQuery 文档的链接。

于 2012-06-09T20:14:37.647 回答