2012-10-10 118 views
0

這是超級無聊的令人討厭的IE選擇框問題!僅當自動寬度大於當前寬度時才更改元素的寬度(選擇框)-jquery

我已經成功地解決了它...

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(顯然,選項是動態的)。

所以現在,我試圖只在自動寬度大於當前寬度的情況下更新選擇框的寬度。 喜歡的東西: 「DD」。

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

而且我正在排序爲 'autoWidth' 和 'currentWidth'($()的想法outerWidth()給出了寬度145,但我怕如果我可以使用它作爲currentWidth,因爲我在同一個jsp上獲得了多個選擇框,並且具有相同的css類「dd」,儘管事件僅針對「this」選擇框觸發。可能是有人可以讓我知道如何獲得類焦點下的選擇框的名稱...也許!.....和外部寬度。)。

所以請大家幫忙!

回答

1

我發現它真的很難理解你的意思,特別是因爲你沒有包含任何小提琴甚至生成的HTML代碼...但我想也許你想做的事是這樣的:

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

UPDATE:

$(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"); 
      }); 
     } 

    }); 

});​ 
+0

排序:只有在設置爲自動增加寬度時,選擇框寬度才應該設置爲自動。 在選擇:.not('#id')的情況下,$(this).width()返回'null'/'undefined'... 小提琴適合你: http://jsfiddle.net/RKXmT/ 請讓我知道如果我需要更清晰......謝謝。 – AlienNova

+0

我更新了你的小提琴:http://jsfiddle.net/robertofrega/RKXmT/2/是嗎? –

+1

應該工作....謝謝! – AlienNova

0

我想,如果你使用%,持續你的CSS寬度,這個問題HANDELS

width:80%; 
+0

怎麼樣?你能解釋一下嗎? – AlienNova

+0

當您設置所有尺寸的百分比時,任何具有任何設備的用戶都可以以更好的質量看到您的網站,例如您設置主要div寬度:80%,margin:0 auto然後使用所有子div寬度div寬度:20%,... –

相關問題