jQuery – 调用函数内联

我试图将一个变量传递给内联的jQuery函数(即:在实际链接中使用onMouseOver="function();" (这是图像映射中的区域标记))。

只有在我将它放在$(document).ready(function(){ line之前,才会调用该函数,但这样做会导致jQuery出现各种问题。

我想要的只是一个简单的标签(例如

来启动一个包含的函数在正常的jQuery代码体内。

非常感谢您提供的任何帮助。

为了说明这一点,以下工作:

  function myfunction(x) { alert(x); //Alerts 2 }    

但以下情况并非如此

   $(document).ready(function(){ function myfunction(x) { alert(x); //Nothing happens } }    

在你的第二个例子中,你已经你传递给.ready()的匿名函数中声明了myfunction 。 这意味着myfunction是一个局部变量,它只在匿名函数的范围内,你不能从其他任何地方调用它。

有两种解决方案。

首先,您可以在调用.ready()之外(之前或之后)声明它。 这不应该对jQuery造成任何干扰。 如果确实如此,那么其他错误(可能是一个简单的语法错误?)我们欢迎您提出StackOverflow问题。

其次,你不应该使用onMouseOver=""来附加事件处理程序(因为它将JavaScript与HTML混合在一起),所以让我们完全废除它。 用这个替换你的JavaScript:

 $(document).ready(function() { $("#that-area-down-there").mouseover(function() { alert(2); }); }); 

你的HTML用这个:

  

(当然,您可能希望用上下文中更有意义的内容替换该id 。)

有两个方法,为什么代码不起作用。 首先,在对ready函数的调用中缺少右括号,因此会出现语法错误。

其次,您在函数内定义的函数仅存在于该范围内。 退出该function时,它不再存在。

例:

 $(document).ready(function(){ function myfunction(x) { alert(x); } myfunction(42); // here it works } myfunction(-1); // here it doesn't exist 

您可以在函数中全局定义函数,如下所示:

 $(document).ready(function(){ myfunction = function(x) { alert(x); } });