Aus irgendeinem Grund beträgt der Platzhalter für meine sortierbaren Elemente etwa 10 Pixel. Alle meine sortierbaren Gegenstände haben unterschiedliche Höhen. Wie kann ich die Höhe jedes Platzhalters an das zu verschiebende Objekt anpassen?
Aus irgendeinem Grund beträgt der Platzhalter für meine sortierbaren Elemente etwa 10 Pixel. Alle meine sortierbaren Gegenstände haben unterschiedliche Höhen. Wie kann ich die Höhe jedes Platzhalters an das zu verschiebende Objekt anpassen?
Antworten:
Normalerweise löse ich dieses Problem, indem ich einen Rückruf binde, der die Höhe des Platzhalters auf die Höhe des zu sortierenden Elements für das start
Ereignis festlegt . Es ist eine einfache Lösung, mit der Sie genau steuern können, wie Ihr Platzhalter angezeigt werden soll.
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
}
});
Siehe aktualisierten Testfall
Haben Sie versucht, die forcePlaceholderSize:true
Eigenschaft festzulegen? Lesen Sie die Dokumentationsseite zur sortierbaren jQuery-Benutzeroberfläche .
.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
zu ändern .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; }
(also die Höhe entfernen) Also @DarthJDG du hast recht!
Sind deine Elemente display: block
? Inline-Elemente können dazu führen, dass der Platzhalter die Höhe nicht richtig beibehält. Z.B. Diese jsFiddle scheint ein ähnliches Problem zu haben wie das von Ihnen beschriebene. Das Hinzufügen display: block
zur .portlet
Klasse behebt das Problem.
Anstatt "ui.item.height ()" zu verwenden, können Sie "ui.helper [0] .scrollHeight" verwenden, um ein stabiles Ergebnis zu erzielen, wenn Sie ein Element auch aus einem externen Container ziehen.
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.helper[0].scrollHeight);
}
});
Sie können einen Stil für Ihren Platzhalter als Option für Ihre Sortierbarkeit festlegen.
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight"
});
Und geben Sie diesem Stil einfach eine Höhe. Hoffe das funktioniert.
In meinem Fall habe ich eine ähnliche Lösung wie JP Hellemons gefunden , bei der ich die Höhe des Platzhalters (mit ! Wichtig ) auf benutzerdefiniert erzwinge und auch die Sichtbarkeit mit Hintergrund einstelle, um Änderungen für mich selbst zu sehen (Sie können Ihren Platzhalter auch so gestalten, wie Sie möchten ).
Dies funktioniert auch mit 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