使我的鼠标事件代码在jquery中更加优雅

时间:2011-08-24 09:53:40

标签: javascript jquery

我写这篇文章是为了解决IE的问题,如果选项下拉列表的选项长度超过了选择的默认值,那么它就会被截断。现在它工作正常,但我想改进代码,以便学习如何以更有用的方式编写东西。

            $(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 个答案:

答案 0 :(得分:1)

我不清楚你想要做什么。有一件事是肯定的 - 你不能定义这样的事件处理程序(见下面的注释):

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

注意:从技术上讲,您可以像上面的代码一样定义事件处理程序。为了实现这一点,函数 test 必须返回一个函数,该函数将成为事件的实际处理程序。