为什么包含.click的函数在没有单击jquery的情况下执行?

时间:2014-09-28 06:59:35

标签: javascript jquery

我正在尝试简化我的代码。我想在里面写一个带有事件处理程序的函数,在那里我可以快速输入参数并消除一堆额外的输入(经过几个小时的编码后它确实对我有所影响)。作为示例,我为.html方法(工作正常)创建了一个“快捷方式”函数,为.click事件处理程序创建了一个。然而,.click函数在用户没有点击任何内容的情况下执行。我无法弄清楚为什么。
Here is a JSFiddle:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"></head>
<body>

    <h1 style="background-color:#555">-.-</h1>

    <button id="bu">How's awesome?</button>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    <script type="text/javascript">

    var h1 = "h1";
    var bu = "#bu";
    var awesome = "You are awesome!";

    function html(a,b) {$(a).html(b);}

    function yaa() {html(h1,awesome);}

    function clickIt(a,b) {$(a).click(function(){b;})}

    clickIt(bu,yaa());

    // $(bu).click(function(){yaa();})

    </script>

</script>

</body>
</html> 

1 个答案:

答案 0 :(得分:1)

您正在调用该函数而不是通过引用传递

function clickIt(a,b) {$(a).click(function(){b();})} // here

clickIt(bu,yaa); // not here

您可以稍微优化一下,然后通过引用传递b,jQuery将调用它。

function clickIt(a,b) {$(a).click(b)}