手册上的例子,改了下。为什么focusout调用匿名函数效果的确是失去焦点时执行,但是focusin调用外部函数会直接执行?<p><input type="text" /> <span>focusout fire</span></p>
<p><input type="password" /> <span>focusout fire</span></p>
<script type="text/javascript" src="jquery.js"></script>
<script>
$("p").focusin(a());
$("p").focusout(function() {
  $(this).find("span").css('display','inline').fadeIn(1000);
});
function a()
{
$("p").find("span").css('display','inline').fadeOut(1000);
}
</script>

解决方案 »

  1.   

    $("p").focusin(a);
    去掉a后面的括号,你加了括号就表示调用了,a 指向的本来就是一个函数,你加个括号表示调用该函数了...
      

  2.   

    注意jQuery的“事件冒泡原则”!!
      

  3.   

    a函数是由focusin事件引发的,也就是说a函数是个事件函数,只能接收事件focusin传入的参数 e 。所以不用担心引入参数的问题。 
      

  4.   

    那意思是说事件函数不能传递外部的参数?
    比如说function a(assign)
    {
    ${"#"+assign}.fadeIn(1000);
    }这样不能作为事件函数?要实现相似的功能只得写成插件$.a这样的形式?
      

  5.   

    可以这样子
    $("p").focusin(function(){ a("参数");});
      

  6.   


    错了
    $("p").focusin(function(assign){ a(assign);});