Làm cách nào để xác định hướng hoạt động thay đổi kích thước? Tôi đã thử googling đó và tìm thấy một vé trên jquery ui, mà nói rằng nó là cố định. Nhưng không có tài liệu về cách sử dụng nó.jQuery UI có thể thay đổi kích thước - hướng hoạt động
Trả lời
Không chắc chắn nếu bạn có nghĩa là bạn muốn để hạn chế các hoạt động thay đổi kích thước để trục cụ thể, hoặc nếu bạn muốn biết những gì hướng thay đổi kích thước thực xảy ra trong.
Câu trả lời của RaYell có hiệu quả nếu bạn muốn sử dụng trước đây. Tôi sẽ thảo luận về sau.
Nếu bạn thiết lập một thay đổi kích thước như thế này:
var r = $("#resizable");
r.resizable();
Hãy nói rằng bạn muốn biết những gì hướng thay đổi kích cỡ xảy ra ở sau người dùng nhả nút chuột. Hãy liên kết một hàm với sự kiện dừng kích thước lại:
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;
}
Sử dụng đối tượng ui đã qua, chúng tôi có thể xác định kích thước tương đối bằng cách trừ kích thước mới từ kích thước cũ. Sau đó, bạn có thể sử dụng delta_x
và delta_y
nhưng bạn muốn. Hãy xây dựng một chuỗi tương ứng với một trong các chốt.
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);
});
Lưu ý rằng điều này sẽ không nhất thiết phải trở về mà xử lý đã thực sự sử dụng để thực hiện các thay đổi kích thước nếu bạn có tay cầm trên cả hai mặt của nguyên tố này, chỉ có nó là hướng ròng.
Giải pháp này rất tuyệt, khi tôi muốn xác định thay đổi ở cuối thay đổi kích thước. Nhưng vấn đề là, rằng tôi muốn biết hướng ở đầu của thay đổi kích thước. Tôi biết điều này có vẻ vô lý, vì tôi không thể đoán được, cho dù người dùng sẽ giảm hoặc mở rộng kích thước. Nhưng điều duy nhất tôi cần biết, là hanlder được chọn - đông hay tây (chỉ có hai cái có thể có trong ứng dụng của tôi). – gruszczy
Ngoài báo cáo cuối cùng trong câu trả lời này, điều này sẽ không thành công nếu, ví dụ: xử lý 'phía tây' được di chuyển? Trong trường hợp đó, nếu chiều rộng bị giảm - bằng cách di chuyển tay cầm về phía đông - delta_x sẽ nhỏ hơn 0, do đó hướng báo cáo sẽ là 'w'. –
Tôi nghĩ là lựa chọn handles
là những gì bạn đang sau:
$(selector).resizable({handles: 'n, s, e, w'})
đâu chữ đại diện cho hướng địa lý:
- n - bắc (trên cùng)
- s - nam (dưới)
- e - east (phải)
- w - west (trái)
- ne - đông bắc (trên cùng bên trái)
- se - đông nam (phía dưới bên trái)
- nw - tây bắc (trên cùng bên trái)
- sw - phía tây nam (phía dưới bên trái)
Sử dụng bất kỳ tập hợp con nào ở trên mà bạn thích.
Bạn có thể tìm thấy tài liệu cho tùy chọn đó here
Không, OP không muốn xác định các hướng có thể, nhưng để xác định hướng nào đã được chọn thực sự. – AGuyCalledGerald
Điều này không giải quyết được câu hỏi ban đầu. – SeanK
Trong khi bắt đầu, thay đổi kích thước, và dừng callbacks:
$(this).data('resizable').axis
$(".ui-resizable-handle").live("mousedown", function(e) {
$.ui.curResizeDirection = this.className.split("-").pop();
console.log($.ui.curResizeDirection);
});
Tôi biết đây là một câu hỏi từ một thời gian dài trước đây, nhưng các giải pháp đưa ra không giải quyết được vấn đề của tôi. Tôi tìm thấy một cách để có được để xử lý trong chức năng bắt đầu và nó làm việc trong FF và chrome. Tổ chức của tôi không hỗ trợ IE nên nó chưa được kiểm tra, nhưng trong trường hợp này, cách thức FF sẽ hoạt động vì đó là xử lý sự kiện tiêu chuẩn hơn.
$(".resizable").resizable({
start: function (event, ui) {
var dir = event.toElement ? event.toElement : event.originalEvent.target;
}
});
dir
là sau đó xử lý thực tế, bạn sẽ phải tìm thấy những lớp và hướng từ đó (phân tích từ danh sách lớp, nếu tôi đạt được điều đó, tôi sẽ gửi những gì tôi làm). Nó là hữu ích để biết hướng mà trong đó việc thay đổi kích thước đang xảy ra trước khi thay đổi kích thước cho rất nhiều lý do, và tôi thực sự nghĩ rằng jQuery nên có bao gồm một cách để biết xử lý đã được nắm lấy.
Sau đó chỉnh sửa: jQueryUI cung cấp getters cho API của họ, trong trường hợp này để có được danh sách xử lý bạn muốn chỉ làm
var handles = $(".selector").resizable("option", "handles");
(mà là trực tiếp từ những con ngựa miệng). Trong trường hợp của tôi, tôi chỉ kiểm tra nếu nó là 'n' hoặc 's' (lên hoặc xuống) và sau đó tính toán thay đổi kích thước trong đối tượng bằng cách lấy kích thước ban đầu trong hàm khởi đầu và sử dụng chức năng thay đổi kích cỡ như vòng lặp để tiếp tục tính toán nó. Nếu kích thước đã giảm hướng đi lên nếu từ tay cầm phía nam và xuống nếu từ tay cầm phía bắc, và nếu nó tăng thì có nghĩa là hướng xuống từ tay cầm phía nam hoặc lên từ tay cầm phía bắc.
Để nhận được nó là 'n' hoặc 'đang được kéo, tôi chỉ lấy dir
từ trên và cắt tất cả mọi thứ nhưng lá thư cuối cùng tắt của tên lớp trở lại, vì lớp là một cái gì đó như ui-handle-s
.
Nó thực sự khá hài hước vì tôi đã không kết thúc bằng cách sử dụng hầu hết các điều này, kể từ khi tôi thay đổi nó để chỉ thay đổi kích thước từ phía dưới. Vì tôi không sử dụng nó, tôi hy vọng người khác thấy điều này hữu ích.
Tôi đang gặp một điều kỳ lạ về việc này. Nếu tôi bấm vào chính cạnh của núm điều khiển thay đổi kích thước, phần tử được trả về thực sự là phần tử hiện diện ngay bên ngoài phần tử có thể thay đổi kích thước. Phần tử vẫn thay đổi kích thước. Bất kỳ cơ hội nào bạn gặp phải điều đó? – smurf
Tôi không có vấn đề như vậy, nhưng những thứ tôi đang thay đổi kích thước thực sự nhỏ, khoảng 100px rộng với chiều cao thay đổi. Vì chúng tôi đã không kết thúc bằng cách sử dụng này tôi chỉ tìm thấy sự thay đổi về kích thước. nếu bạn chỉ thay đổi kích thước từ một bên có thể là một tùy chọn. – maggiekh
Vâng, tôi nghĩ rằng đó là sự cố với sự kiện jquery mousemove khác trên div khác đang làm gián đoạn sự kiện thay đổi kích thước ban đầu – smurf
jsonx đã có một giải pháp tốt nhưng bạn cũng có thể sử dụng được xây dựng trong các sự kiện:
$('#resizable').resizable({
handles: 'n,s',
start: function(event, ui) {
var handleDirection = event.srcElement.className.split("-").pop();
}
});
Mã này làm cho các yếu tố '#resizable' thay đổi kích thước và đặt tay cầm ở phía bắc và phía nam của nguyên tố này . Nếu tay cầm phía bắc được nhấp và kéo thì handleDirection là 'n'. Tôi không thể tìm được cách tương tự để thực hiện việc này với sự kiện 'dừng'.
Hãy thử mã này:
$("#resizable").resizable({
handles: "n, e, s, w",
resize: function(event, ui) {
//your codes here
}
});
Các div được đổi kích thước trong bốn hướng bằng công xử lý tài sản.
Kiểm tra nó ra ở đây:
http://www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#resizable
- 1. plugin xoay jquery - hoạt động như jquery ui thay đổi kích thước
- 2. Thay đổi kích thước iFrame với jQuery UI
- 3. JQUERY UI Accordion Thay đổi kích thước trên cửa sổ Thay đổi kích thước?
- 4. Tự động hoàn tất có thể thay đổi kích thước
- 5. jQuery-UI: có thể thay đổi kích thước - cách tăng kích thước cạnh có thể kéo được?
- 6. Cửa sổ kích hoạt thay đổi kích thước cửa sổ bật lửa jQuery UI
- 7. jQuery ui Có thể thay đổi kích thước bằng các thanh cuộn
- 8. Cột có thể thay đổi kích thước
- 9. Tái định vị jQuery UI Tự động điền trên trình duyệt thay đổi kích thước
- 10. jQuery có thể thay đổi kích thước() và nhiều cũngResizes?
- 11. Không thể làm cho jQuery có thể thay đổi kích thước để hoạt động: Tôi đang làm gì sai?
- 12. Plugin Android PhoneGap, UI tabbar, thay đổi kích thước WebView
- 13. boost :: multi_array thay đổi kích thước không hoạt động
- 14. Thay đổi kích thước Nút giao diện người dùng jQuery?
- 15. Tự động thay đổi kích thước phần tử với kích thước cửa sổ jquery
- 16. Jquery với khả năng kéo có thể kéo và có thể thay đổi kích thước không hoạt động như mong đợi
- 17. Cách dừng thuộc tính có thể thay đổi kích thước của một phần tử trong jQuery UI
- 18. jQuery Mobile Lưới với những hình ảnh tự động thay đổi kích thước
- 19. Làm thế nào để thay đổi kích thước của jquery UI datepicker
- 20. Chức năng thay đổi kích thước jQuery không hoạt động khi tải trang
- 21. Cách kích hoạt jQuery UI DatePicker onclick?
- 22. Tự động thay đổi kích thước hàng TableLayoutPanel khi cửa sổ được thay đổi kích thước
- 23. Cách tự động thay đổi kích thước lưới khi biểu mẫu được thay đổi kích thước?
- 24. Thay đổi kích thước JScrollpane với nội dung có kích thước thay đổi
- 25. Thay đổi kích thước GLKView
- 26. Thay đổi tốc độ hoạt ảnh của Jquery UI Accordion
- 27. Làm thế nào để kích hoạt jquery Resizable thay đổi kích thước lập trình?
- 28. tự động thay đổi kích thước văn bản (cỡ chữ) khi thay đổi kích thước cửa sổ?
- 29. Chiều cao jQuery() không thay đổi kích thước
- 30. AngularJS/jQuery: thay đổi văn bản trong span không kích hoạt thay đổi kích thước sự kiện
Tôi cũng muốn biết mà xử lý được nhấp vào lúc bắt đầu thay đổi kích cỡ. – Karl
Vui lòng xem câu trả lời của tôi http://stackoverflow.com/a/20833716/776687 – Webars