在jquery代码中调用javascript函数外部

时间:2012-05-17 18:00:47

标签: javascript jquery

$(function(){

function f1(){}
function f2(){}

}

<Input type = radio Name = radiobutton Value = "something" checked=checked onClick= //here call f1()//>

我尝试在OnClick中访问f1函数

像这样的代码不起作用:

$.function.f1()
$.function().f1()

2 个答案:

答案 0 :(得分:6)

那是因为你应该做这样的事情:

$(function () {

    function foo () { }
    function bar () { }

    // bind
    $('input').on('click', foo);

});

...而不是在HTML标记上添加onclick=属性。

修改

根据要求,一些快速说明为什么应该执行jQuery绑定而不是onclick标记事项。

  1. 你已经在使用jQuery,简单明了。使用它。
  2. 应该花费大量精力来分离HTML,CSS和JS。 HTML文件中的HTML,JS文件中的JS,等等。在您的HTML标记中添加onclick=do_backflips()会违反此标准,并且导致将来出现噩梦般的维护问题,等等。
  3. DOM0 onclick=语法本质上是1:1。这意味着,对于每个元素的每个事件,您只能附加一个事件处理程序。那肯定会吸球。
  4. 通过在f1处理程序函数中定义f2document.ready函数,您将限制其在该函数中的范围。这意味着它们不能在该范围之外引用,这意味着脚本解释器将不知道HTML标记所在的f1。你必须在处理程序已知的情况下附加事件处理程序,并且在document.ready内(如果这是有意义的话)。

答案 1 :(得分:1)

使用$( function(){ ... } )的意义在于,只有在DOM完成加载后才能运行内部。除非目标是保持命名空间的清洁并使用本地范围内的函数,否则在那里定义函数没有任何好处。

在这种情况下,您需要范围之外的函数,因此只需将它们移到匿名函数之外,或将事件绑定到范围内的单选按钮。