$(function(){
function f1(){}
function f2(){}
}
<Input type = radio Name = radiobutton Value = "something" checked=checked onClick= //here call f1()//>
我尝试在OnClick中访问f1函数
像这样的代码不起作用:$.function.f1()
$.function().f1()
答案 0 :(得分:6)
那是因为你应该做这样的事情:
$(function () {
function foo () { }
function bar () { }
// bind
$('input').on('click', foo);
});
...而不是在HTML标记上添加onclick=
属性。
根据要求,一些快速说明为什么应该执行jQuery绑定而不是onclick
标记事项。
onclick=do_backflips()
会违反此标准,并且将导致将来出现噩梦般的维护问题,等等。onclick=
语法本质上是1:1
。这意味着,对于每个元素的每个事件,您只能附加一个事件处理程序。那肯定会吸球。f1
处理程序函数中定义f2
和document.ready
函数,您将限制其在该函数中的范围。这意味着它们不能在该范围之外引用,这意味着脚本解释器将不知道HTML标记所在的f1
。你必须在处理程序已知的情况下附加事件处理程序,并且在document.ready
内(如果这是有意义的话)。答案 1 :(得分:1)
使用$( function(){ ... } )
的意义在于,只有在DOM完成加载后才能运行内部。除非目标是保持命名空间的清洁并使用本地范围内的函数,否则在那里定义函数没有任何好处。
在这种情况下,您需要范围之外的函数,因此只需将它们移到匿名函数之外,或将事件绑定到范围内的单选按钮。