jQuery函数在点击之前启动,为什么?

时间:2012-11-23 04:15:51

标签: javascript jquery click transition

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

非常感谢各州的人们感恩节快乐!

3 个答案:

答案 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 );
}​