问题:
blur
和keyup
事件每次触发一次,只有onload。我怎样才能使它们正常工作?
jQuery的:
function myFunction(text){
alert(text);
}
$('#input1').on({
keyup: myFunction('keyup'),
blur: myFunction('blur'),
focus: function(){console.log('focus!');}
});
答案 0 :(得分:13)
您没有为keyup
和blur
分配功能,而是指定执行myFunction
的结果。
像这样改变:
$('#input1').on({
keyup: function() { myFunction('keyup'); },
blur: function() { myFunction('blur'); },
focus: function() { console.log('focus!'); }
});
答案 1 :(得分:6)
你没有将这些函数声明为回调,你正在执行它们,并且它们的返回结果被指定为回调(它不起作用)。
试试这个:
$('#input1').on({
keyup: function() { myFunction('keyup') },
blur: function() { myFunction('blur') },
focus: function(){console.log('focus!');}
});
答案 2 :(得分:6)
您需要将函数作为参数传递..您传递被调用函数的返回值
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!');}
});
答案 3 :(得分:4)
当你以这种方式调用它们时,你实际上正在执行这些函数。试试这个:
$('#input1').on({
keyup: function(){myFunction('keyup')},
blur: function(){myFunction('blur')},
focus: function(){console.log('focus!');}
});
<强> jsFiddle example 强>
答案 4 :(得分:0)
使用.on()事件
$(document).on("keyup blur", "#input1", function(event)
{
// your code
});