2011-08-24 18 views
0

我写这个是为了解决IE选择下拉列表时被截断的问题,如果它们的选项长于select的默认值。现在它工作正常,但我想改进代码,以便学习如何以更加可用的方式编写事物。让我的mouseevent在jquery中编码更加优雅

  $(document).ready(function() { 
      if ($.browser.msie) { 
       $('select').focus(function() { $(this).addClass('expand').removeClass('clicked'); }) 
       $('select').blur(function() { $(this).removeClass('expand clicked'); }) 
       $('select').mousedown(function() { $(this).addClass('expand').removeClass('clicked'); }) 
       $('select').hover(function() { }, function() {if (!$(this).hasClass('clicked')) { $(this).removeClass('expand'); $(this.blur()) }}) 
       $('select').click (function() { $(this).toggleClass('clicked'); }) 
       $('select').change(function(){ $(this).removeClass('expand clicked'); $('select.widerIE').blur() }) 
      } 
      }); 

我试图使这是由每个事件调用的函数,但是这似乎不能如:

  $('select').click(test (a)) 
       function test (a) { 
        $(a).addClass('expand').removeClass('clicked') 
        } 

回答

1

这不是我清楚你想才达到的。有一两件事是肯定的 - 你不能定义一个事件处理这样的(参见下面的注释):

$('select').click(test (a)) 

注:从技术上讲,你可以在代码中定义事件处理程序像上面。为了这个工作,功能测试将不得不返回一个函数,该函数将是事件的实际处理程序。