2011-01-14 4 views
4

У меня есть 3 столбца, которые изменяются по размеру. Когда человек становится более широким, один налево уменьшается. По существу, всего 2 ручки. Левый col и Mid col. Поэтому, когда Mid col становится тоньше, Right col расширяется соответственно. Все три из них содержатся с родительским div 900px, поэтому сумма всех трех всегда равна 900. У них максимальная и минимальная ширины установлены статически.jQuery resizable() dynamic maxWidth опция

Моя проблема в том, что если вы возьмете левый дескриптор и переместите его вправо, вы все равно сможете использовать правый дескриптор и развернуть середину col за краем родительского div.

Я думал о способе решить эту проблему, написав функцию, которая проверяет ширину столбцов, а затем вычитает левый и правый столбцы из родительской ширины div, я назвал ее mWid. Это оставляет меня с номером, который я хочу установить как maxWidth для Mid col.

Теперь вопрос заключается в том, что mWid является подъемы не обновлялись здесь «MaxWidth: mWid»

Вот что функция правой ручки выглядит следующим образом:

$(function() { 
    $("#midResizable").resizable({ 
     handles: 'e', 
     containment: '#container', 
     maxWidth: mWid, // gets set once, but doesn't update! WHY? 
     minWidth: 195, 
     resize: function(event, ui) { 
      contWidth = $('#container').width() 
      newWidth = $(this).width() 
      leftWidth = $('#leftResizable').width() 
      rightWidth = $('#rightResizable').width() 
      $("#rightResizable").css("width", (contWidth-15)-(newWidth)-(leftWidth)+"px"); 
      checkWid() 
     } 
    });  
});  

function checkWid() { 
    rightWidth = $('#rightResizable').width() 
    leftWidth = $('#leftResizable').width() 
    contWidth = $('#container').width() 
    mWid = (contWidth-15)-(rightWidth)-(leftWidth) 
} 

ответ

6

Проверьте это: http://jqueryui.com/demos/resizable/#option-maxWidth

Похоже, maxWidth: mWid, только вызывается init.

MaxWidth должен быть явно установлен после того, как это:

$("#midResizable").resizable("option", "maxWidth", mWid); 
+0

Или вы можете также использовать максимальную ширину в CSS. Возможно, просто примените CSS к элементу (через файл CSS или через JQuery) – Bulki