我有以下代码.... 当页面加载时,即使我没有点击我的div,也会调用myFunc()。为什么? 声明为“内联”的函数未被触发......嗯...... ........
<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>
答案 0 :(得分:10)
因为你的代码:
$("#map").click(myFunc());
错了,必须是:
$("#map").click(myFunc);
您的代码首先调用myFunc(),然后模拟onclick事件。
如文档中所示:
你做的是:(因为myFunc返回null)
点击()
触发每个匹配元素的click事件。 导致已执行绑定到该click事件的所有函数。 要在页面上的所有段落上触发click事件: $( “P”)点击();
你想要的是这个:
点击(fn) 将函数绑定到每个匹配元素的click事件。 单击指向设备按钮时,会触发单击事件。单击被定义为同一屏幕位置上的mousedown和mouseup。这些事件的顺序是:
答案 1 :(得分:3)
使用myFunc()
中的$("#map").click(myFunc())
,您将myFunc
调用函数引用,并且只将其返回值传递给$("#map").click
。如果您想要传递myFunc
函数本身,请将括号留下并仅使用函数名称:
$("#map").click(myFunc);
答案 2 :(得分:1)
应该是
$("#map").click(myFunc);
这样,您可以将该函数作为参数。 $("#map").click(myFunc());
触发了该函数,并将其结果作为参数。
答案 3 :(得分:1)
您正在点击事件处理程序中调用您的函数。这样做:
<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>
在将参数作为参数传递给事件处理程序(或任何其他函数)时,只传递函数的名称而不带括号。
答案 4 :(得分:0)
$("#map").click(myFunc);
不是
$("#map").click(myFunc());
答案 5 :(得分:0)
应该是
$("#map").click(myFunc);
而不是
$("#map").click(myFunc());
传递myFunc()
而不是myFunc
实际调用此函数
答案 6 :(得分:0)
这可以从你的代码中得到,因为这里:
$("#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>