繁体   English   中英

使用jQuery在任何事件上使用参数调用函数

[英]call function with parameters on any event using jquery

您好只是想知道这是否是正确的方法。 我知道我们可以使用对象表示法传递数据并使用它。 但是只是想知道下面的代码是否正确。 我不确定以下语法。

 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);

检查此链接以获取输出http://jsfiddle.net/susheel61/M2jsX/

所以只想弄清楚传递参数是否直接有效。

您的代码调用isValid方法,并将结果分配为blur处理程序,因此不正确。 你应该做这样的事情

$("#fname").on("blur",function(){
    isValid("please enter first name","fname","ferror")
});

看来您还可以做其他改进。 对我来说最明显的是传递this.id而不是对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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM