Đây là quan sát của tôi và lời giải thích hợp lý cho hành vi kỳ lạ này.
Khi di chuyển một phần tử từ vùng chứa câu hỏi sang vùng chứa câu trả lời, trình giữ chỗ ban đầu tự thêm vào phần đầu câu trả lời trước khi di chuyển con trỏ tiếp theo nhận được câu trả lời1 và answer2.Thực sự, điều này sẽ không xảy ra khi trình giữ chỗ nhảy trước answer1 và sau đó giữa answer1 và answer2.
* PS: * Hiệu ứng này có thể không hiển thị trong cửa sổ jsfiddle nhưng nếu bạn xây dựng một trang HTML mới với mã đã cho, bạn sẽ thấy những gì tôi đang nói.
Điều tra thêm cho thấy có lỗi trong plugin giao diện người dùng jquery có thể sắp xếp. Lấy phiên bản phát triển của jquery.ui.sortable.js và tìm cụm từ này "var dist = 10000; var itemWithLeastDistance = null". Mục tiêu của đoạn mã này là để tìm ra phần tử gần nhất gần nhất khi con trỏ di chuyển từ vùng chứa này sang vùng chứa khác.
Quan sát biến "cur" (Tôi đã thêm lệnh console.log() cho firebug). Giá trị của biến này luôn là . Vì giá trị của cur luôn là '0', mã cho rằng sẽ tính sai phần tử <li> cuối cùng là 'mụcWithLeastDistance' và nhảy sai ở đó.
//When entering a new container, we will find the item with the least distance and append our item near it
var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
for (var j = this.items.length - 1; j >= 0; j--) {
if (!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top'];
//my comments
console.log("cur : %s for iteration: %s has base %s", cur, j, base);
if (Math.abs(cur - base) < dist) {
dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
//my comments
console.debug(this.items[j]);
}
}
Cho tôi biết cộng đồng nghĩ gì. chúng tôi có thể báo cáo điều này với nhóm jquery ui.
Nguồn
2011-10-19 14:59:56
Đây có phải là sự cố về trình duyệt không? Tôi có thể kéo mọi thứ từ Câu hỏi đến Trả lời và Trả lời câu hỏi mà không gặp bất kỳ sự cố nào trong Chrome. BTW - sự sắp xếp trong IE7 bị tắt. – nolabel
Tôi đã mô phỏng vấn đề trong FF, Opera và Chrome. Bạn có thể kéo Câu hỏi lên đầu danh sách Câu trả lời bằng cách để phần giữ chỗ di chuyển đến vị trí thứ hai trước không? –
Tôi không thể tạo lại vấn đề đó trong Chrome 9, cho những gì nó đáng giá. Câu hỏi xuất hiện chính xác nơi tôi kéo chúng trong các câu trả lời, bao gồm cả đầu. –