【问题标题】:How to create a function for click event?如何为点击事件创建函数?
【发布时间】:2014-02-05 18:03:35
【问题描述】:

我有一个点击事件,在事件处理程序中有一个我想在点击后执行的函数,以从 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");

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

【问题讨论】:

    标签: javascript jquery function


    【解决方案1】:

    您的 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");
    

    【讨论】:

    • 此代码永远不会在单击时运行“myFunction”,而是在加载脚本时立即进行评估,并且“click()”只接收“未定义”而不是回调函数
    • 谢谢你,克里斯!抱歉,点击不起作用! “我想在点击后执行功能来改变点击按钮的类”。
    【解决方案2】:

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

    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/

    【讨论】:

    • 非常感谢,但我想使用setTimeout 更改班级。按照你的建议,我必须点击更改课程。
    • 您可能只需将setTimeout 调用移动到click 回调函数中。我不能 100% 确定你想要达到的目标,但我希望你能从这里得到正确的答案:)
    【解决方案3】:

    函数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);
    });
    

    【讨论】:

      猜你喜欢
      • 2014-05-23
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多