2014-09-28 1 views
-1

Я пытаюсь упростить свой код. Я хотел бы написать функцию с обработчиком событий внутри, где я могу быстро вводить параметры и исключать кучу лишнего набора текста (после нескольких часов кодирования это действительно имеет значение для меня). В качестве примеров я создал функцию «shortcut» для метода .html (который отлично работает) и один для обработчика события .click. Однако функция .click выполняется без щелчка пользователем чего-либо. Я не могу понять, почему.
Here is a JSFiddle:Почему функция, содержащая .click, выполняется без нажатия на jquery?

<!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

Добро пожаловать в SO. снова проверьте свой код и используйте JSFiddle.net – Rafee

ответ

1

Вы вызываете функцию вместо прохождения по ссылке

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

clickIt(bu,yaa); // not here 

Вы можете оптимизировать это немного, затем передавая b по ссылке, и JQuery будет называть его.

function clickIt(a,b) {$(a).click(b)} 
Смежные вопросы