2011-01-05 1 views
1

У меня есть объект, который имеет свойство status = "lock". Div, представляющий этот объект, является изменяемым по размеру и перетаскиваемым.jquery resizable return false

Для перетаскиваемого, если я использую следующую логику, то увлекая эффективно блокируется старта: {... если состояние == блокировки затем вернуть ложь ...}

Но тот же логик изменяемого делает не работает

Я могу установить изменяемыми («отключено»), но было интересно, если я могу остановить изменение размера в течение начала или изменить события

Спасибо

ответ

0

Это не выглядит, как вы можете отменить изменить размер события из s tart/resize.

может указать селектор, к которому не применяются изменения размера, используя опцию cancel. С помощью этой стратегии вам нужно будет добавить класс к каждому изменяемому размеру div, указав, хотите ли вы его изменить.

Например, предположим, что у вас есть набор данных, как это:

var data = [ 
    { id: 'test1', status: 'lock' }, 
    { id: 'test2', status: 'unlock' }, 
    { id: 'test3', status: 'lock' } 
]; 

И вы хотите, чтобы заблокировать эти элементы со статусом: «замок». Если у вас есть код, который создает DOM элементы из этих данных, как это:

var i, length = data.length; 
for(i = 0; i < length; i++) { 
    $("body").append("<div id='" + data[i].id + "' class='resizable " + data[i].status + "'/>"); 
} 

Обратите внимание, что элементы теперь имеют класс (блокировки или разблокировки) в зависимости от их собственности «статус».

Теперь вы можете сделать следующее, чтобы отменить изменение размера на элементах с классом lock:

$(".resizable").resizable({ cancel: ".lock" });

Попробуйте: http://jsfiddle.net/andrewwhitaker/CDUce/

+0

Спасибо это хороший подход. Я принял это как ответ, но для своего приложения у меня есть событие mousedown, поэтому я вызываю evt.stoppropogation, когда флаг объекта установлен на «Lock». Таким образом, мне не нужно кодировать изменяемый размер и перетаскивать отдельно. – Nilesh