Как определить направление операции изменения размера? Я попробовал поиск в Google и нашел билет на jquery ui, который сказал, что он исправлен. Но нет документа о том, как его использовать.jQuery UI resizable - направление операции
ответ
Не уверен, что, если вы имели в виду, что вы хотите, чтобы ограничить операцию изменения размера для определенной оси, или если вы хотите знать, в каком направлении изменения размера на самом деле произошел в.
Ответ Райелла работает, если вы хотели бывших. Я обсужу последнее.
Если вы создали изменяемыми так:
var r = $("#resizable");
r.resizable();
Допустим, вы хотите знать, в каком направлении изменения размера произошло в после пользователь отпускает кнопку мыши. Давайте связать функцию к событию изменения размера остановки:
r.bind('resizestop', function(event, ui) {
// determine resize deltas
var delta_x = ui.size.width - ui.originalSize.width;
var delta_y = ui.size.height - ui.originalSize.height;
}
Используя принятый объект пользовательского интерфейса, можно определить относительное изменение размера путем вычитания нового размера от старого размера. После этого вы можете использовать delta_x
и delta_y
, но вы хотите. Давайте построим строку, соответствующую одному из дескрипторов.
r.bind('resizestop', function(event, ui) {
// determine resize deltas
var delta_x = ui.size.width - ui.originalSize.width;
var delta_y = ui.size.height - ui.originalSize.height;
// build direction string
var dir = '';
if (delta_y > 0) {
dir += 's';
} else if (delta_y < 0) {
dir += 'n';
}
if (delta_x > 0) {
dir += 'e';
} else if (delta_x < 0) {
dir += 'w';
}
// do something with this string
alert(dir);
});
Обратите внимание, что это не обязательно вернется, который ручка фактически используется для выполнения изменения размера, если у вас есть ручки с обеих сторон элемента, только это чистая направление.
Это решение классно, когда я хочу определить изменение в конце изменения размера. Но проблема в том, что я хотел бы знать направление в начале изменения размера. Я знаю, что это может показаться абсурдным, поскольку я не могу догадаться, будет ли пользователь уменьшать или расширять размер. Но единственное, что мне нужно знать, это то, какой хандер был выбран - на восток или на запад (только те, которые возможны в моем приложении). – gruszczy
В дополнение к заключительному утверждению в этом ответе, не произойдет ли это, если, например, перемещается дескриптор «west»? В этом случае, если ширина уменьшается - перемещая рукоятку на восток - delta_x будет меньше нуля, поэтому сообщенное направление будет «w». –
Я думаю, что вариант handles
является то, что вы после:
$(selector).resizable({handles: 'n, s, e, w'})
Где буквы представляют географические направления:
- п - север (сверху)
- s - южный (нижний)
- e - восток (справа)
- w - запад (слева)
- пе - на северо-восток (слева вверху)
- себе - на юго-восток (слева внизу)
- северо-запад - северо-запад (слева вверху)
- ЮЗ - юго-запад (слева внизу)
Использование любое подмножество выше, которое вам нравится.
Вы можете найти документацию для этой опции here
Нет, OP не хочет определять возможные направления, но чтобы определить, какое направление было выбрано. – AGuyCalledGerald
Это не относится к исходному вопросу. – SeanK
В начале, изменение размера и остановки функции обратного вызова:
$(this).data('resizable').axis
$(".ui-resizable-handle").live("mousedown", function(e) {
$.ui.curResizeDirection = this.className.split("-").pop();
console.log($.ui.curResizeDirection);
});
Я знаю, это вопрос из давно, но данные решения не решить мою проблему. Я нашел способ добраться до обработчика в функции запуска, и он работает в FF и chrome. Моя организация не поддерживает IE, поэтому она не проверена, но в этом случае путь FF должен работать, поскольку это более стандартная обработка событий.
$(".resizable").resizable({
start: function (event, ui) {
var dir = event.toElement ? event.toElement : event.originalEvent.target;
}
});
dir
тогда фактический обработчик, вы должны будете найти класс и направление от этого (разбор из списка классов, если я попаду туда, я после того, что я делаю).
Полезно знать направление, в котором изменение размера происходит до изменения размера по многим причинам, и я действительно думаю, что jQuery должен был включить способ узнать, какой дескриптор был захвачен.
Позже изменения: jQueryUI предоставляет методы получения их API, в этом случае, чтобы получить список ручки вы хотите просто сделать
var handles = $(".selector").resizable("option", "handles");
(который прямо из уст лошадей). В моем случае я просто проверял, было ли это «n» или «s» (вверх или вниз), а затем вычислялось изменение размера в объекте, захватывая исходный размер в функции запуска и используя функцию изменения размера, такую как цикл продолжать вычислять его. Если бы размер уменьшался, направление было вверх, если с южной ручкой и вниз, если бы с северной ручки, и если бы она увеличивалась, это означало, что направление было вниз от южной ручки или вверх от северной ручки.
Чтобы получить, было ли это «n» или «s» вытащили, я только что захватил dir
сверху и нарезал все, кроме последней буквы от имени класса, так как класс был чем-то вроде ui-handle-s
.
Это на самом деле довольно с чувством юмора, поскольку я не использовал большую часть этого, так как я изменил его, чтобы изменить размер только снизу. Поскольку я не использую его, я надеюсь, что кто-то еще найдет это полезным.
Я испытываю странную вещь по этому поводу. Если я нажимаю на самый край дескриптора изменения размера, возвращаемый элемент фактически является элементом, который присутствует непосредственно вне изменяемого размера элемента. Однако элемент все еще изменяется. Вы случайно столкнулись с этим? – smurf
У меня не было таких проблем, но вещи, которые я изменяю, очень маленькие, около 100 пикселей шириной с переменной высотой. Поскольку мы не закончили использовать это, я просто нахожу изменение размера. если вы только изменяете размер с одной стороны, что может быть вариантом. – maggiekh
Да, я думаю, что это проблема с другим событием jquery mousemove на другом div, который прерывает исходное событие изменения размера – smurf
jsonx получил хорошее решение, но вы также можете использовать встроенные события:
$('#resizable').resizable({
handles: 'n,s',
start: function(event, ui) {
var handleDirection = event.srcElement.className.split("-").pop();
}
});
код делает «» #resizable элемента изменяемого и кладет ручки на северном и южных сторонах элемента , Если щелкнуть северную ручку и перетащить, тогда handleDirection будет «n». Мне не удалось найти аналогичный способ сделать это с событием «stop».
Попробуйте этот код:
$("#resizable").resizable({
handles: "n, e, s, w",
resize: function(event, ui) {
//your codes here
}
});
ДИВ изменяет размер в четырех направлениях, используя ручку свойства.
Проверьте это здесь:
http://www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#resizable
- 1. Обратное направление jQuery UI resizable
- 2. jQuery UI Resizable: Ghosting issue
- 3. Альтернативы jQuery UI Resizable
- 4. jquery ui: window resizable
- 5. jQuery Resizable() UI Задача
- 6. Resizable Холст (JQuery UI)
- 7. jQuery UI resizable pinch
- 8. jQuery UI Resizable
- 9. JQuery UI Menu & Resizable - Overlap
- 10. jquery ui resizable не работает
- 11. jQuery UI resizable expand div
- 12. jQuery UI Resizable in TH
- 13. проблема с jQuery UI: Resizable
- 14. jQuery UI draggable() и resizable()
- 15. jQuery UI resizable перестает работать
- 16. jQuery UI Resizable Two Objects
- 17. resizable jQuery UI doen't work
- 18. JQuery UI - margin issue with jquery resizable
- 19. jQuery UI resizable с плагином jQuery floatThead
- 20. jQuery UI - изменяемый размер. Проверьте направление
- 21. Элемент получает ui-resizable, но не ui-resizable-handle
- 22. jQuery resizable
- 23. Лучший способ настройки JQuery UI Resizable method
- 24. jQuery UI: Resizable: ухватить событие изменения размера
- 25. jQuery UI resizable Минимальная ширина слишком велика
- 26. JQuery ui resizable, возвращающий размер (анимированный: true)
- 27. JQuery UI Resizable нерегулярных оснастки сетка
- 28. Отображение высоты отключает jquery ui resizable
- 29. jquery ui resizable с перетаскиваемой ошибкой
- 30. jquery UI resizable with multiple alsoResize
Я также хотел бы знать, какая ручка была нажата в начале изменения размера. – Karl
См. Мой ответ http://stackoverflow.com/a/20833716/776687 – Webars