ด้วยเหตุผลบางประการตัวยึดสำหรับรายการที่จัดเรียงได้ของฉันมีขนาดประมาณ 10px รายการที่จัดเรียงได้ทั้งหมดของฉันมีความสูงต่างกัน ฉันจะเปลี่ยนความสูงของตัวยึดตำแหน่งแต่ละตัวให้ตรงกับรายการที่กำลังย้ายได้อย่างไร
ด้วยเหตุผลบางประการตัวยึดสำหรับรายการที่จัดเรียงได้ของฉันมีขนาดประมาณ 10px รายการที่จัดเรียงได้ทั้งหมดของฉันมีความสูงต่างกัน ฉันจะเปลี่ยนความสูงของตัวยึดตำแหน่งแต่ละตัวให้ตรงกับรายการที่กำลังย้ายได้อย่างไร
คำตอบ:
ฉันมักจะแก้ปัญหานี้โดยผูกการเรียกกลับที่กำหนดความสูงของตัวยึดกับความสูงของรายการที่จัดเรียงให้กับstart
เหตุการณ์ เป็นวิธีง่ายๆที่ให้คุณควบคุมได้ละเอียดว่าคุณต้องการให้ตัวยึดตำแหน่งของคุณแสดงอย่างไร
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
}
});
.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
เป็น.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; }
(ลบความสูง) ดังนั้น @DarthJDG คุณพูดถูก!
องค์ประกอบของคุณdisplay: block
หรือไม่ องค์ประกอบแบบอินไลน์อาจทำให้ตัวยึดตำแหน่งรักษาความสูงไม่ถูกต้อง เช่น. jsFiddle นี้ดูเหมือนจะมีปัญหาคล้ายกับที่คุณอธิบายไว้ การเพิ่มdisplay: block
ลงใน.portlet
คลาสจะช่วยแก้ไขได้
แทนที่จะใช้ "ui.item.height ()" คุณสามารถใช้ "ui.helper [0] .scrollHeight" เพื่อให้ผลลัพธ์คงที่เมื่อลากรายการจากคอนเทนเนอร์ภายนอกได้เช่นกัน
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.helper[0].scrollHeight);
}
});
คุณสามารถกำหนดสไตล์สำหรับตัวยึดตำแหน่งของคุณเป็นตัวเลือกสำหรับการจัดเรียงของคุณ
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight"
});
และให้สไตล์นั้นสูง หวังว่าจะได้ผล
ในกรณีของฉันฉันพบวิธีแก้ปัญหาที่คล้ายกับJP Hellemonsซึ่งฉันกำลังบังคับให้ความสูงของตัวยึด (ด้วย! important ) เป็นแบบกำหนดเองและยังตั้งค่าการมองเห็นด้วยพื้นหลังเพื่อดูการเปลี่ยนแปลงสำหรับตัวฉันเอง (คุณสามารถจัดสไตล์ด้วยตัวยึดตำแหน่งของคุณได้ทุกที่ที่คุณต้องการ ).
ซึ่งใช้งานได้กับ display: inline-block;
.ui-sortable-placeholder {
background:red !important;
height: 2px !important; // this is the key, set your own height, start with small
visibility: visible !important;
margin: 0 0 -10px 0; // additionaly, you can position your placeholder,
} // in my case it was bottom -10px