我有这个链接:
<%= link_to_function "remove", "remove_fields(this)"%>
输出这个html:
<a href="#" onclick="remove_fields(this); return false;">remove</a>
我有这个JQuery函数:
function remove_fields(link){
$(link).prev("input[type=hidden]").val("1");
$(link).closest(".fields").hide();
}
但是当我点击链接时,我收到此错误:
Uncaught ReferenceError: remove_fields is not defined
为什么会这样,我该如何解决?
答案 0 :(得分:2)
如果你有这样的功能声明:
jQuery(function ($) {
function remove_fields ...
});
然后它只在jQuery(function () { })
函数内的范围内,并且从外部看不到。解决这个问题的两种方法:
var remove_fields;
jQuery(function ($) {
remove_fields = function () { ... }
});
声明一个全局可访问的变量并使其像往常一样运行。
但更好:
jQuery(function ($) {
function remove_fields ...
$('a.some-class').click(remove_fields);
});
从jQuery范围内以编程方式附加click处理程序。
答案 1 :(得分:1)
你不应该使用onclick
属性,这是一种不好的做法,属于90年代的东西。相反,你应该为你的锚添加一个类,并使用jQuery将处理程序绑定到click事件。
<强> HTML 强>
<a class="remove-fields" href="#">remove</a>
<强>的JavaScript 强>
// This is a shorthand for document.ready
$(function(){
// Bind handler to click event
$("a.remove-fields").click(function(e){
var $this = $(this);
$this.prev("input[type=hidden]").val("1");
$this.closest(".fields").hide();
// Prevent default behavior
e.preventDefault();
});
});
答案 2 :(得分:0)
可能是显而易见的,但是在html的源头中链接的是javascript吗?