仅当自动宽度大于当前width-jquery时才更改元素的宽度(选择框)

时间:2012-10-10 13:45:30

标签: jquery html css jsp

这是超级烦人的超级烦人的IE-select-box问题!

我成功地解决了它......

JQUERY:

$(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是动态的,我不知道它的宽度是多少/小于145px(选项是动态的......显然)。

所以现在,我只是在其自动宽度超过当前宽度时尝试更新选择框的宽度。 类似的东西:

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

我正在为'autoWidth'和'currentWidth'运行一些想法($(“。dd”)。outerWidth()给出的宽度为145,但我担心如果我可以将它用作currentWidth我在同一个jsp上有相同的css类'dd'的多个选择框,虽然只为'this'选择框触发了事件。可能有人可以让我知道如何获得焦点下的选择框的类名。 ..maybe!.....而不是outerWidth。)。

所以请帮忙!

2 个答案:

答案 0 :(得分: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");
            });
        }

    });

});​

答案 1 :(得分:0)

我认为如果你使用%作为你的CSS宽度,这个问题handels

width:80%;