1
$(function(){

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

}

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

我尝试在 OnClick 中访问 f1 功能

像这样的代码不起作用:

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

2 回答 2

6

那是因为你应该这样做:

$(function () {

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

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

});

...而不是onclick=在您的 HTML 标记上放置一个属性。

编辑

根据要求,一些关于为什么你应该做 jQuery 绑定而不是onclick标记的快速注释。

  1. 您已经在使用 jQuery,简单明了。用它。
  2. 应该付出巨大的努力来分离您的 HTML、CSS 和 JS。HTML 文件中的 HTML,JS 文件中的 JS,等等。放入onclick=do_backflips()您的 HTML 标记违反了这一点,并且在未来导致噩梦般的维护问题,等等。
  3. DOM0onclick=语法本质上是1:1. 这意味着自然地,对于每个元素的每个事件,您只能附加一个事件处理程序。那绝对是烂球。
  4. 通过在处理程序函数中定义您的f1和函数,您可以限制它们在该函数中的范围。这意味着它们不能在该范围之外被引用,这意味着脚本解释器不会知道您的 HTML 标记在哪里。您必须在处理程序已知的地方附加事件处理程序,并且在内部(如果有意义的话)。f2document.readyf1document.ready
于 2012-05-17T18:08:51.043 回答
1

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

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

于 2012-05-17T18:05:50.987 回答