如何在jquery中定义函数?

时间:2009-12-18 15:43:42

标签: jquery function

我在下面的代码在jquery中的ready函数中工作得很好,当我填充表单并将焦点从input元素更改为另一个运行ajax检查并为元素分配css类时,显示是否已经过验证或不。一切都好。

id'喜欢用这段代码定义一个函数,所以我也可以在刚刚加载页面时调用它,所以如果表单填充在服务器端,并且模糊,我也会执行检查,但是我遇到了麻烦在jquery中定义函数。

这是在模糊

上运行的代码
$('#join_username').blur(function(){
    $('#join_username').addClass(\"join_form_input_checking\");
    $('#join_username').removeClass(\"join_form_input\");      
    $('#join_username').removeClass(\"join_form_input_error\");      
    $('#join_username').removeClass(\"join_form_input_verified\");      


    $.post(\"inc/viewlets/join_form/check_username.php\", {
            join_username: $('#join_username').val()
            }, 
            function(response){
                    setTimeout(\"finishAjaxUsername('usernameResult', '\"+escape(response)+\"')\", 400);
        if(escape(response)=='true') joinFormCheck[0]=true;      
        else joinFormCheck[0]=false;

        checkFormArray(joinFormCheck);          
            }
          );              

    return false;
});

4 个答案:

答案 0 :(得分:15)

只需定义一个函数,而不是传递blur()一个匿名函数:

$.myFunctionName = function()
{
   // your code here
}

$("#join_username").blur($.myFunctionName);

如果您希望在响应事件(例如document.ready)时调用该函数,只需像调用普通函数一样调用它。

$(document).ready(function()
{
    // -- define your function
    $.myFunctionName = function()
    {
       //your code here
    }

    // -- add a callback to blur on an input
    $("#join_username").blur($.myFunctionName);

    // -- manually call the function once
    $.myFunctionName(); 
});

答案 1 :(得分:15)

或者您可以使用常规函数语法

function do_on_blur(){
   // your base. I'm in it
}

$("#join_username").blur( do_on_blur );

答案 2 :(得分:0)

我认为你的语法无效:

$('#join_username').blur( function(){
    $(this)
      .addClass("join_form_input_checking")
      .removeClass("join_form_input");      
      .removeClass("join_form_input_error");      
      .removeClass("join_form_input_verified");      


    $.post("inc/viewlets/join_form/check_username.php", {
      join_username: $(this).val()
    }, function(response) {
      setTimeout( function() {
        finishAjaxUsername('usernameResult', escape(response))
      }, 400);
      if(escape(response)=='true') { joinFormCheck[0]=true; }
      else { joinFormCheck[0]=false; }
      checkFormArray(joinFormCheck);          
    } );                  

    return false;
} );

试试吧。然后,当然如果你想让函数与blur事件分开,你只需将它分配给一个变量......所以你最终会得到:

var blurFunc = function() { ...function from above... };
$('#join_username').blur( blurFunc );

答案 3 :(得分:0)

如果你不想创建一个jQuery插件,那么将jQuery函数传递给你想要使用的函数就足够了。当您只需要该功能一次时,将使用匿名函数。

function blur() {};

$('#join_username').blur(blur);

通常在函数被多次使用时完成;通常,您将使用匿名函数。