jQuery - 自定义触发器无法正常工作

时间:2014-03-26 05:24:35

标签: javascript jquery event-handling

在我的表单中,在“keyup”上 - 我正在触发自定义事件。但它不起作用。我也需要从触发器接收值。

这是我的代码:

(function($){

    $(document).on('nameEnter', showName);

    input = $('#name');
    input.on('keyup', function(){
        var value = $(this).val();
        $.event.trigger({
            type:'nameEnter',
            value:value,
            time: new Date()
        });
    });

    var showName = function(params){
        console.log('params is', params); //nothing happening!
    };

}(jQuery));

Live Demo is Here.

3 个答案:

答案 0 :(得分:1)

您需要正确声明该功能才能正常工作:

(function($){

    $(document).on('nameEnter', showName);

    input = $('#name');
    input.on('keyup', function(){
        var value = $(this).val();
        $.event.trigger({
            type:'nameEnter',
            value:value,
            time: new Date()
        });
    });

}(jQuery));

    function showName (params){
        console.log('params is', params.value);
    };

You can check it in action here

答案 1 :(得分:1)

在将showName传递给.on方法之前,必须先定义它:

var showName = function(params){
    console.log('params is', params);
};

$(document).on('nameEnter', showName);

答案 2 :(得分:1)

主要问题在于您声明功能的方式

更改此

          var showName = function(params){
            console.log('params is', params); //nothing happening!
          };

            function showName (params){
              console.log('params is', params.value);
           };

这与函数范围有关,这里更多

Difference between assigning function to variable or not

主要区别在于第一个(函数声明)被提升到声明它的作用域的顶部,而第二个(函数表达式)不是。

这就是为什么你无法在手前访问函数表达式