jQuery .on keyup和模糊触发onload只
问题: blur
和keyup
事件每次触发一次,只有onload。 我怎样才能使它们正常工作?
jQuery的:
function myFunction(text){ alert(text); } $('#input1').on({ keyup: myFunction('keyup'), blur: myFunction('blur'), focus: function(){console.log('focus!');} });
小提琴: http : //jsfiddle.net/GrMQX/
您没有为keyup
和blur
指定函数,而是指定myFunction
的执行结果。
像这样改变它:
$('#input1').on({ keyup: function() { myFunction('keyup'); }, blur: function() { myFunction('blur'); }, focus: function() { console.log('focus!'); } });
DEMO
你没有将这些函数声明为回调,你正在执行它们并且它们的返回结果被指定为回调(它不起作用)。
试试这个:
$('#input1').on({ keyup: function() { myFunction('keyup') }, blur: function() { myFunction('blur') }, focus: function(){console.log('focus!');} });
你需要传递一个函数作为参数..你传递被调用函数的返回值
function myFunction(text){ alert(text); } $('#input1').on({ keyup: function(){myFunction('keyup');}, blur: function(){myFunction('blur');}, focus: function(){console.log('focus!');} });
或者您可以将myFunction
转换为函数生成器
function myFunction(text){ return function(){ console.log(text); } } $('#input1').on({ keyup: myFunction('keyup'), blur: myFunction('blur'), focus: function(){console.log('focus!');} });
当你以这种方式调用它们时,你实际上正在执行这些函数。 试试这个:
$('#input1').on({ keyup: function(){myFunction('keyup')}, blur: function(){myFunction('blur')}, focus: function(){console.log('focus!');} });
jsFiddle示例
与.on()事件一起使用
$(document).on("keyup blur", "#input1", function(event) { // your code });