问题:每次触发的事件blur和keyup事件都是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)
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)
你没有将这些函数声明为回调,你正在执行它们并且它们的返回结果被指定为回调(它不起作用).
试试这个:
$('#input1').on({
keyup: function() { myFunction('keyup') },
blur: function() { myFunction('blur') },
focus: function(){console.log('focus!');}
});
Run Code Online (Sandbox Code Playgroud)
您需要将函数作为参数传递..您传递被调用函数的返回值
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/