我正在尝试简化我的代码。我想在里面写一个带有事件处理程序的函数,在那里我可以快速输入参数并消除一堆额外的输入(经过几个小时的编码后它确实对我有所影响)。作为示例,我为.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>
答案 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)}