如何为click事件创建一个函数?

时间:2014-02-05 09:34:02

标签: javascript jquery function

我有一个点击事件,并且在事件处理程序中有一个我希望在点击 A 更改更改已点击按钮的类后执行的功能(通过设置超时)到 B

我试过这个,但这不起作用(见jsFiddle):

Button.click(function(){
    function myFunction(x,y){
        $(this).addClass(x);
        alert(x);

        $(this).addClass(y);
        alert(y);
    }
});


setTimeout(function(){
    myFunction("aaa","bbb");
}, 100);
myFunction("ccc","ddd");

如何在点击事件后使功能正常工作? 任何帮助表示赞赏。非常感谢你。

3 个答案:

答案 0 :(得分:4)

如果单击按钮,则仅定义myfunction()。尝试寻找它:

var Button = $("#button");

function myFunction(x,y){
    Button.addClass(x);
    alert(x);

    Button.addClass(y);
    alert(y);
}

Button.click(function() {
    myFunction('aaa','bbb');
});

setTimeout(function(){
    myFunction("aaa","bbb");
}, 100);

myFunction("aaa","bbb");

答案 1 :(得分:1)

我认为这就是你要找的东西。它与其他答案类似,但仅在单击按钮时调用该函数。

var button = $('button#test');

function myFunction(x,y){
    button.addClass(x);
    alert(x);

    button.addClass(y);
    alert(y);
}

button.click(function(){
    myFunction("aaa", "bbb");
});

我在这里更新了小提琴:http://jsfiddle.net/mFd5K/3/

答案 2 :(得分:0)

函数myFunction在不同的词法范围内定义。

请改用:

//You don't want to define the function each time the button is clicked
function myFunction(x,y){
    $(this).addClass(x);
    alert(x);

    $(this).addClass(y);
    alert(y);
}

Button.click(function(){
    var self = this;
    setTimeout(function(){
        myFunction.call(butto, "aaa","bbb");
    }, 100);
});