所以我正在使用jquery和jquery.transit制作一个简单的框旋转。
我正在使用一个基本的.click
函数来调用另一个命名函数。但是,在我单击按钮之前执行命名函数(当页面加载时立即执行),我想知道为什么会发生这种情况,我该如何解决这个问题?
这是一个jsfiddle:http://jsfiddle.net/kdLSS/1/
我的代码:
<!DOCTYPE html>
<html>
<head>
<style>
div {
background-color:yellow;
width:100px;
border:1px solid blue;
position:absolute;
left:50px;
}
</style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js'></script>
<script src='jquerytransit.js'></script>
<title>test</title>
</head>
<body>
<script>
$(function() {
function hello() {
$("#block").transition({
perspective: '0px',
rotateY: '180deg'
}, 100 );
}
$("#go").click(hello())
});
</script>
<button id="go"> Run</button>
<div id="block">Hello!</div>
</body>
</html>
非常感谢各州的人们感恩节快乐!
答案 0 :(得分:5)
修复您的事件处理程序分配。它应该是:
$("#go").click(hello);
// not $("#go").click(hello());
您想要传递对hello
函数的引用。您不希望将hello
函数的结果传递给它。
答案 1 :(得分:1)
在javascript中,在函数名后面添加()会立即执行该函数。您想为click事件分配一个函数obmiss the()
即
$("#go").click(hello);
然后在点击#go时执行该功能
答案 2 :(得分:0)
@Le Marcin
您已经犯了一些基本错误。就像您在function hello
内退回document.ready
并且未正确关闭括号一样。因此,只有在Dom
准备就绪后才能运行。
更正的脚本。
$(function() {
$("#go").click(function() {
hello();
alert("Hi")
});
});
function hello()
{
$("#block").transition({ perspective: '0px',
rotateY: '180deg' }, 5000 );
}