为什么在页面加载时触发jQuery点击事件?
我有以下代码.... 当页面加载时myFunc()被调用,即使我不点击我的div。为什么? 函数声明为 “内联” 则不会触发... hmmmm ........为什么在页面加载时触发jQuery点击事件?
<div id="map" style="background: green; height: 100px"></div>
<script type="text/javascript">
function myFunc() {
alert("allways triggered when page loads...");
};
$(document).ready(function() {
$("#map").click(myFunc());
$("#map").click(function() { alert("not triggered") });
});
</script>
因为你的代码:
$("#map").click(myFunc());
是错误的,必须是:
$("#map").click(myFunc);
您的代码将首先调用myFunc的()和比模拟onclick事件。
,如文档中看到:
你做了这是什么:(如myFunc的返回null)
点击()
触发每一个匹配元素的click事件。 导致所有已绑定到该点击事件的功能被执行。 触发页面上所有段落的点击事件: $(“p”)。click();
你想要的是这样的:
点击(FN) 绑定到每一个匹配元素的click事件的功能。 点击指定设备按钮单击元素时会触发click事件。点击被定义为在同一屏幕位置上的mousedown和mouseup。这些事件的顺序是:
应该
$("#map").click(myFunc);
这样,你给函数作为参数。 $("#map").click(myFunc());
触发该功能,并给出其结果作为参数。
你在你的click事件处理函数中调用你的函数。做到这一点,而不是:
<script type="text/javascript">
function myFunc() {
alert("allways triggered when page loads...");
};
$(document).ready(function() {
$("#map").click(myFunc);
$("#map").click(function() { alert("not triggered") });
});
</script>
您只需通过名称的功能,没有括号,路过时,它作为参数传递给事件处理程序(或任何其它功能)。
$("#map").click(myFunc);
不
$("#map").click(myFunc());
随着$("#map").click(myFunc())
的myFunc()
你打电话的myFunc
,只有它的返回值传递给$("#map").click
函数的引用。如果你想通过myFunc
功能本身,离开括号路程,只使用功能名称:
$("#map").click(myFunc);
错误的很好的说明。我可以添加应该传递给函数的函数,应该声明为:var MyFunc = function(){...}。但是,大多数(所有?)Web浏览器仍接受标准声明(函数MyFunc()...)。 – 2009-10-13 07:09:22
@Björn:你的函数声明没有错。因为'myFunc()'将通过'myFunc'调用函数引用,并且只有它的返回值将被传递给$(“#”)。地图“)。click'。 – Gumbo 2009-10-13 07:23:01
胡?我的声明?我没有向JQuery传递任何东西,我经常最终使用Mootools;)我认为你让我困惑于OP。我只是给出了一个提示,以正确的方式声明函数,将它作为参数传递给其他函数... – 2009-10-13 07:43:18
应该
$("#map").click(myFunc);
,而不是
$("#map").click(myFunc());
传递myFunc()
,而不是myFunc
实际调用此功能
这是从您的代码预计,因为这里:
$("#map").click(myFunc());
该函数后面的括号()将导致它被调用。
试试这个:
<script type="text/javascript">
var myFunc = function() {
alert("allways triggered when page loads...");
};
$(document).ready(function() {
$("#map").click(myFunc);
$("#map").click(function() { alert("not triggered") });
});
</script>
太谢谢你了.... – 2009-10-13 07:10:47