我正在尝试将一个变量传递给内联 jQuery 函数(即:使用onMouseOver="function();"
在实际链接内(这是图像映射中的区域标记))。
仅当我将其放在之前时才会调用该函数$(document).ready(function(){
行,但这样做会导致 jQuery 出现各种问题。
我想要的只是一个简单的标签(例如<area shape="circle" coords="357,138,17" onMouseOver="change('5');" id="5" />
启动包含在正常 jQuery 代码体内的函数。
为了说明这一点,可以进行以下工作:
<script type="text/javascript">
function myfunction(x) { alert(x); //Alerts 2
}
</script>
<img src="/shared_images/loading.gif" border="0" usemap="#Map">
<map name="Map"><area shape="rect" coords="171,115,516,227"
onMouseOver="myfunction('2')"></map>
但下面的则不然
<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
function myfunction(x) { alert(x); //Nothing happens
}
}
</script>
<img src="/shared_images/loading.gif" border="0" usemap="#Map">
<map name="Map"><area shape="rect" coords="171,115,516,227"
onMouseOver="myfunction('2')"></map>
在你的第二个例子中,你已经声明了myfunction
inside您传递给的匿名函数.ready()
。这意味着myfunction
是一个局部变量,仅在该匿名函数内部的范围内,并且您不能从其他任何地方调用它。
有两种解决方案。
首先,您可以在调用之外(之前或之后)声明它.ready()
. This 不应该对 jQuery 造成任何干扰。如果确实如此,则说明存在其他错误(可能是简单的语法错误?),我们欢迎您在 StackOverflow 问题中提出。
其次,你不应该使用onMouseOver=""
附加事件处理程序(因为它将 JavaScript 与 HTML 混合在一起),所以让我们完全取消它。将您的 JavaScript 替换为:
$(document).ready(function() {
$("#that-area-down-there").mouseover(function() {
alert(2);
});
});
你的 HTML 是这样的:
<area shape="rect" coords="171,115,516,227" id="that-area-down-there" />
(大概你会想要替换它id
当然,还有一些在上下文中更有意义的东西。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)