jQuery .on keyup和模糊触发onload只

Moo*_*man 7 jquery jquery-on

问题:每次触发的事件blurkeyup事件都是onload,只有onload.我怎样才能使它们正常工作?

jQuery的:

function myFunction(text){
    alert(text);
}
$('#input1').on({
    keyup: myFunction('keyup'),
    blur: myFunction('blur'),
    focus: function(){console.log('focus!');}
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/GrMQX/

Cla*_*edi 13

您没有为keyup和分配函数,并且blur您正在分配执行结果myFunction.

像这样改变它:

$('#input1').on({
    keyup: function() { myFunction('keyup'); },
    blur:  function() { myFunction('blur'); },
    focus: function() { console.log('focus!'); }
});
Run Code Online (Sandbox Code Playgroud)

DEMO


Nic*_*los 6

你没有将这些函数声明为回调,你正在执行它们并且它们的返回结果被指定为回调(它不起作用).

试试这个:

  $('#input1').on({
    keyup: function() { myFunction('keyup') },
    blur: function() { myFunction('blur') },
    focus: function(){console.log('focus!');}
  });
Run Code Online (Sandbox Code Playgroud)


Gab*_*oli 6

您需要将函数作为参数传递..您传递被调用函数的返回值

function myFunction(text){
    alert(text);
}
$('#input1').on({
    keyup: function(){myFunction('keyup');},
    blur: function(){myFunction('blur');},
    focus: function(){console.log('focus!');}
});
Run Code Online (Sandbox Code Playgroud)

或者您可以将您转换myFunction为函数生成器

function myFunction(text){
   return function(){
       console.log(text);
   }
}

$('#input1').on({
    keyup: myFunction('keyup'),
    blur: myFunction('blur'),
    focus: function(){console.log('focus!');}
});
Run Code Online (Sandbox Code Playgroud)

演示 http://jsfiddle.net/gaby/GrMQX/6/