0

这是超级无聊超级烦人的 IE 选择框问题!

我已经成功解决了...

查询:

$(function(){
    if($.browser.msie){
        $("select:not(#wrkTimeFrm,#wrkTimeFrm1,#wrkTimeTo,#wrkTimeTo1)")
            .focus(function(){
            $(this).css("width","auto");
            $(this).css("position","absolute");
        });
        $("select:not(#wrkTimeFrm,#wrkTimeFrm1,#wrkTimeTo,#wrkTimeTo1)")
            .blur(function(){
            $(this).css("width","145px");
            $(this).css("position","inherit");
        });
    }
})

……但那只是到现在为止。

正如你所看到的:not(id)s 是选择框,其大小是/应该小于145px,即它不应该改变。它工作正常。但是这样的选择框列表太多了,无法以这种方式处理。此外,ID 是动态的,我不知道谁的宽度大于/小于 145 像素(选项是动态的……显然)。

所以现在,我只在其自动宽度大于其当前宽度时才尝试更新选择框的宽度。就像是:

$(function(){
    if($.browser.msie){
        $("select").focus(function(){
            if(autoWidth>currentWidth){
            do_the_rest();
            }
        });
    }
});

我正在为 'autoWidth' 和 'currentWidth'($(".dd").outerWidth() 提供一些想法,宽度为 145,但我担心如果我可以将它用于 currentWidth,因为我得到了更多比具有相同 css 类“dd”的同一 jsp 上的一个选择框,尽管事件仅针对“this”选择框触发。可能有人可以让我知道如何获取焦点下选择框的类名...也许!......比outerWidth。)。

所以请帮忙!

4

2 回答 2

1

我发现很难理解你的意思,特别是因为你没有包含任何小提琴甚至生成的 HTML 代码......但我想也许你想要做的是:

$(function(){
    if($.browser.msie){
        $("select").focus(function(){
            if($(this).width()>145){
              $(this).css("width","auto");
            }
        });
    }
});

更新:

$(function() {
    $("select").focus(function() {
        if ($(this).width() > 95) {
            var prevWidth = $(this).width();
            $(this).css("width", "auto");
            if ($(this).width() < 100) {
                $(this).css("width", 100 + "px");
            }
            $(this).blur(function() {
                $(this).css("width", prevWidth + "px");
            });
        }

    });

});​
于 2012-10-10T14:07:34.973 回答
0

我想如果你使用 % 作为你的 CSS 宽度,这个问题处理

width:80%;
于 2012-10-10T13:51:36.773 回答