Tôi có hai jquery.ui có thể kéo được. Tôi đang hạn chế chuyển động của chúng đến trục y. Nếu một được kéo đến một vị trí y nhất định, tôi muốn người kia tự động di chuyển đến cùng vị trí y và ngược lại. Có ai từng liên kết hai cái này với nhau trước đây không?Có thể liên kết hai jquery.ui với nhau không?
Trả lời
Đã cập nhật: Tập lệnh và bản demo được cập nhật để nó không còn bị giới hạn đối với trục y trong khi kéo.
Tập lệnh này tìm lớp "nhóm" theo sau là số để kéo/thả các đối tượng kết hợp này. Tôi đã đăng một số demo here.
HTML
<div class="demo">
<div id="draggable">
<p>Drag from here</p>
<div class="dragme group1"><img src="image1.jpg"><br>Group 1</div>
<div class="dragme group1"><img src="image2.jpg"><br>Group 1</div>
<div class="dragme group2"><img src="image3.jpg"><br>Group 2</div>
<div class="dragme group2"><img src="image4.jpg"><br>Group 2</div>
</div>
<div id="droppable">
<p>Drop here</p>
</div>
</div>
Script
$(document).ready(function() {
// function to get matching groups (change '.group' and /group.../ inside the match to whatever class you want to use
var getAll = function(t) {
return $('.group' + t.helper.attr('class').match(/group([0-9]+)/)[1]).not(t);
};
// add drag functionality
$(".dragme").draggable({
revert: true,
revertDuration: 10,
// grouped items animate separately, so leave this number low
containment: '.demo',
stop: function(e, ui) {
getAll(ui).css({
'top': ui.helper.css('top'),
'left': 0
});
},
drag: function(e, ui) {
getAll(ui).css({
'top': ui.helper.css('top'),
'left': ui.helper.css('left')
});
}
});
$("#droppable").droppable({
drop: function(e, ui) {
ui.draggable.appendTo($(this));
getAll(ui).appendTo($(this));
}
});
});
tôi đã không làm điều này trước đây, nhưng tôi khuyên bạn nên sử dụng sự kiện drag
để điều chỉnh vị trí của phần tử khác tương ứng:
$('.selector').draggable({
...,
drag: function(event, ui) {
},
...
});
Đối tượng ui
sẽ chứa thông tin (trong tài sản ui.offset
), bạn có thể sử dụng để định vị lại phần tử khác theo cách thủ công.
Bạn phải đặt rõ ràng Trục Y của cả hai phần tử.
Đối với điều này hoặc trong các hàm xử lý sự kiện của cả hai phần tử, bạn sẽ phải đặt Y-Axis hoặc liên kết cả hai phần tử có cùng chức năng.
Mã hóa vui vẻ.
https://forum.jquery.com/topic/dragging-a-group-of-items-alsodrag-like-alsoresize
Tôi tìm thấy một phần mở rộng cho giao diện người dùng có thể kéo(). Nó hoạt động giống như 'alsoResize' cho giao diện người dùng có thể thay đổi kích thước(), tức là
$('.selector').draggable({ alsoDrag: '.selected' });
Thêm mã plugin sau thư viện jquery-ui chính.
$.ui.plugin.add('draggable', 'alsoDrag', {
start: function() {
var that = $(this).data("ui-draggable"),
o = that.options,
_store = function (exp) {
$(exp).each(function() {
var el = $(this);
el.data("ui-draggable-alsoDrag", {
top: parseInt(el.css("top"), 10),
left: parseInt(el.css("left"), 10)
});
});
};
if (typeof(o.alsoDrag) === "object" && !o.alsoDrag.parentNode) {
if (o.alsoDrag.length) { o.alsoDrag = o.alsoDrag[0]; _store(o.alsoDrag); }
else { $.each(o.alsoDrag, function (exp) { _store(exp); }); }
}else{
_store(o.alsoDrag);
}
},
drag: function() {
var that = $(this).data("ui-draggable"),
o = that.options,
os = that.originalSize,
op = that.originalPosition,
delta = {
top: (that.position.top - op.top) || 0,
left: (that.position.left - op.left) || 0
},
_alsoDrag = function (exp, c) {
$(exp).each(function() {
var el = $(this), start = $(this).data("ui-draggable-alsoDrag"), style = {},
css = ["top", "left"];
$.each(css, function (i, prop) {
var sum = (start[prop]||0) + (delta[prop]||0);
style[prop] = sum || null;
});
el.css(style);
});
};
if (typeof(o.alsoDrag) === "object" && !o.alsoDrag.nodeType) {
$.each(o.alsoDrag, function (exp, c) { _alsoDrag(exp, c); });
}else{
_alsoDrag(o.alsoDrag);
}
},
stop: function() {
$(this).removeData("draggable-alsoDrag");
}
});
Đây là một phiên bản đơn giản của các mã đề cập trong câu trả lời rõ rệt (đối với núm vú cao su như tôi)
Trong HTML
<div id="div1" class="group">...</div> <div id="div2"class="group">...</div>
Trong thẻ Script
$(document).ready(function(){ //to get the group var getGroup = function() { return $(".group"); }; // add drag functionality $(".group").draggable({ revertDuration: 10, // grouped items animate separately, so leave this number low containment: "window", scroll: false, stop: function(e, ui) { getGroup(ui).css({ 'top': ui.helper.css('top'), }); }, drag: function(e, ui) { getGroup(ui).css({ 'top': ui.helper.css('top'), 'left': ui.helper.css('left') }); } }); });
- 1. Các phương ngữ GCC khác nhau có thể được liên kết với nhau không?
- 2. Liên kết hai bảng với số cột khác nhau
- 3. Có hai sự kiện jQuery .on bằng nhau được liên kết hai lần không?
- 4. Azure có thể liên kết với Amazon không?
- 5. Knockout.js liên kết có thể sắp xếp lồng nhau
- 6. Có thể có Nuget liên kết với hai gói khác nhau dựa trên kiến trúc xây dựng
- 7. Khách hàng socket.io có thể kết nối với hai máy chủ/cổng khác nhau không?
- 8. Tôi có thể liên kết nhiều thư mục với nhau không?
- 9. Ngăn không cho cùng một đối tượng liên kết với hai phiên khác nhau trong hibernate
- 10. hai chiều một chiều có thể nối với nhau
- 11. Tôi có thể liên kết MSVCRT tĩnh với mingw không?
- 12. Có cách nào nhanh chóng để có được mọi liên kết giữa hai thực thể không?
- 13. hai lớp có thể nhìn thấy nhau bằng C++ không?
- 14. Liên kết hai hình ảnh lại với nhau để được kéo
- 15. Liên kết hai thư viện được chia sẻ với một số biểu tượng giống nhau
- 16. Tìm nút giao nhau từ hai danh sách được liên kết giao nhau
- 17. Liên kết hai tài liệu Office
- 18. Có thể chuyên mẫu về liên kết ngôn ngữ không?
- 19. OpenCV 2.4.4 và Tesseract 3.02.02 Đừng liên kết với nhau
- 20. WPF: Cách liên kết với thuộc tính lồng nhau?
- 21. Không thể liên kết ALAssetsLibrary
- 22. Kết nối hai thiết bị UIScrollView với nhau
- 23. Bạn có thể gọi một servlet có liên kết không?
- 24. DropboxSDK: không thể liên kết
- 25. Liên kết hai Danh sách Sưu tậpCollection
- 26. Có nên tránh các liên kết hai chiều Hibernate?
- 27. Có cách nào để liên kết với Keyboard.FocusedElement không?
- 28. Liên kết không thể phá vỡ CSS
- 29. Không thể liên kết OpenCL trên Windows với GHC
- 30. Eclipse không thể liên kết với kernel32.lib
Tôi nhận được "Loại lỗi không xác định: Không thể đọc thuộc tính '1' của null" tại câu lệnh trả về trong getAll. – user3281466
Tham số 'ui' là' undefined' trong sự kiện 'create'. Vì vậy, không sử dụng chức năng 'getAll' tại thời điểm đó. – Mottie