0

所以我正在使用 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>

非常感谢美国的人们,感恩节快乐!

4

3 回答 3

5

修复您的事件处理程序分配。它应该是:

$("#go").click(hello);

// not $("#go").click(hello());

您想传递对该hello函数的引用。您不想将hello函数的结果传递给它。

于 2012-11-23T04:18:11.190 回答
1

在 javascript 中,在函数名后面添加 () 会立即执行该函数。您想为单击事件分配一个函数,请忽略 ()

IE

 $("#go").click(hello);

然后单击#go 时将执行该函数

于 2012-11-23T04:18:37.667 回答
0

@Le Marcin

您犯了一些基本错误。例如,您已将您的归还function hellodocument.ready没有正确关闭括号。Dom因此,一旦您准备好,它就会被视为运行。

更正的脚本。

$(function() {
    $("#go").click(function() {
        hello();
        alert("Hi")
     });
 });

function hello()
{
    $("#block").transition({ perspective: '0px',
    rotateY: '180deg' }, 5000 );
}​
于 2012-11-23T04:31:02.553 回答