使用jquery对任何事件调用带有参数的函数
嗨,我只是想知道这是不是一个正确的方法。我知道我们可以使用对象符号传递数据并使用它。但我只是想知道下面的代码是否正确。我不确定下面的语法使用jquery对任何事件调用带有参数的函数,jquery,Jquery,嗨,我只是想知道这是不是一个正确的方法。我知道我们可以使用对象符号传递数据并使用它。但我只是想知道下面的代码是否正确。我不确定下面的语法 function isValid(errMessage,errId,errClass){ alert(); if($("#"+errId).val()==""){ $("."+errClass).show(); $("."+errClass).html(errMessage); return f
function isValid(errMessage,errId,errClass){
alert();
if($("#"+errId).val()==""){
$("."+errClass).show();
$("."+errClass).html(errMessage);
return false;
}else{
$("."+errClass).hide();
}
}
$("#fname").on("blur",isValid("please enter first name","fname","ferror"));
我看到了如下语法:
function test(){
alert("Hello World");
}
$("#fname").on("blur",test);
检查此链接的输出
所以我只想弄清楚直接传递参数是否有效 您的代码调用
是有效的
方法,并将结果分配为blur
处理程序,因此它不正确。你应该这样做
$("#fname").on("blur",function(){
isValid("please enter first name","fname","ferror")
});
看来你还可以做其他的改进。对我来说最明显的是passthis.id
,而不是harcoding id
$("#fname").on("blur",function(){
isValid("please enter first name", this.id, "ferror")
});
您的代码调用
是有效的
方法,并将结果指定为blur
处理程序,因此它不正确。你应该这样做
$("#fname").on("blur",function(){
isValid("please enter first name","fname","ferror")
});
看来你还可以做其他的改进。对我来说最明显的是passthis.id
,而不是harcoding id
$("#fname").on("blur",function(){
isValid("please enter first name", this.id, "ferror")
});
可以将事件处理程序作为参数传递给事件侦听器:
$("#fname").on("blur", {
msg: "please enter first name",
name: "fname",
error: "ferror"
}, isValid);
然后,isValid函数可以处理来自事件对象的数据:
function isValid (event) {
var errMessage = event.data.msg,
errId = event.data.name,
errClass = event.data.error;
if ($("#"+errId).val()=="") {
$("."+errClass).show();
$("."+errClass).html(errMessage);
return false;
} else {
$("."+errClass).hide();
}
}
可以将事件处理程序作为参数传递给事件侦听器:
$("#fname").on("blur", {
msg: "please enter first name",
name: "fname",
error: "ferror"
}, isValid);
然后,isValid函数可以处理来自事件对象的数据:
function isValid (event) {
var errMessage = event.data.msg,
errId = event.data.name,
errClass = event.data.error;
if ($("#"+errId).val()=="") {
$("."+errClass).show();
$("."+errClass).html(errMessage);
return false;
} else {
$("."+errClass).hide();
}
}
是的,我知道这个。但我见过这样的语法:function test(){alert(“Hello World”)}$(“#fname”).on(“blur”,test);所以我只想弄清楚直接传递参数是否有效not@susheel字体恐怕我不确定你的问题是什么。您的代码无法正常工作。这里有两个工作选项。我认为我的语法无效。我只是想知道这是否存在。谢谢。@susheel:注意,不是将方法附加到blur,而是执行它。简言之,它并没有像你预期的那样起作用。所以我想我应该作为对象通过,或者按照你的方式:)是的,我知道这个。但我见过这样的语法:function test(){alert(“Hello World”)}$(“#fname”).on(“blur”,test);所以我只想弄清楚直接传递参数是否有效not@susheel字体恐怕我不确定你的问题是什么。您的代码无法正常工作。这里有两个工作选项。我认为我的语法无效。我只是想知道这是否存在。谢谢。@susheel:注意,不是将方法附加到blur,而是执行它。简言之,它并没有像你预期的那样起作用。因此,我认为我应该作为对象传递,或者按照您的方式传递:)$(“#fname”)。在(“blur”上,是有效的(“请输入名字”、“fname”、“ferror”);我知道还有其他选择。只是想知道这个语法是否合法。thanks@susheel事实并非如此。您的函数调用会生成一个结果-isValid(),且结果未定义。通过这种方式,您可以提供一个未定义的event handler.function test(){alert(“Hello World”)}$(“#fname”).on(“blur”,test)作为参数;这种语法是有效的,所以即使是参数也应该有效。但我错了。无论如何,谢谢:)$(“#fname”)。在(“blur”上有效(“请输入名字”、“fname”、“ferror”));我知道还有其他选择。只是想知道这个语法是否合法。thanks@susheel事实并非如此。您的函数调用会生成一个结果-isValid(),且结果未定义。通过这种方式,您可以提供一个未定义的event handler.function test(){alert(“Hello World”)}$(“#fname”).on(“blur”,test)作为参数;这种语法是有效的,所以即使是参数也应该有效。但我错了。无论如何,谢谢:)您的JSFIDLE使用函数调用,而不是对函数的引用。JSFIDLE使用函数调用,而不是对函数的引用。