Der folgende Code sortiert die .dataCard Elemente nach den Werten des data-cardNumber -Attributs und hängt sie dann in der Reihenfolge an #main an.

Wie kann ich sie an #left oder #right anhängen?

Ich möchte, dass es sich zwischen #left oder #right entscheidet, indem ich die Höhe von #left und #right messe und vergleiche.

Wenn #left größer / länger ist, dann an #right anhängen, wenn #right größer / länger ist, dann an #left anhängen, und wenn beide gleich hoch sind, dann an {anhängen {X4}}.

var m = $('#main .dataCard').sort(function(a, b){
    return $(a).data('cardnumber') - $(b).data('cardnumber');
}).appendTo('#main');

Ich würde mich sehr über jede Hilfe freuen, um diese Sortierung in die eine oder andere Spalte basierend auf der Höhe zu erreichen.

Danke im Voraus! }}

1
gomangomango 30 Nov. 2013 im 20:55

3 Antworten

Beste Antwort

Geigen-Demo

var left = $('#left'), //cache selector
    right = $('#right'), //cache selector
    append_to_div;
if (left.height() < right.height()) { //compare height
    append_to_div = right;
} else {
    var append_to_div = left;
}

var x = $('#main .dataCard').sort(function (a, b) {
    return $(a).data('cardnumber') - $(b).data('cardnumber');
});

append_to_div.html(x); //html will add new list of items where as append will add items top previous elements

Aktualisierte Geigen-Demo

var left = $('#left'),
    right = $('#right'),
    l = [],
    r = [];

var x = $('#main .dataCard').sort(function (a, b) {
    return $(a).data('cardnumber') - $(b).data('cardnumber');
});
for (var i = 0; i < left.children().length; i++) {
    l.push(x[i]);
}
for (var i = left.children().length; i < left.children().length + right.children().length; i++) {
    r.push(x[i]);
}
left.html(l);
right.html(r);

Aktualisierte Geigen-Demo

var left = $('#left'),
    right = $('#right'),
    arr = [];

var x = $('#main .dataCard').sort(function (a, b) {
    return $(a).data('cardnumber') - $(b).data('cardnumber');
});
arr = $.makeArray(x);
left.html(arr.slice(0, left.children().length));
right.html(arr.slice(left.children().length));
1
Tushar Gupta - curioustushar 1 Dez. 2013 im 02:10

Überprüfen Sie einfach jedes Mal die Höhe von left und right und vergleichen Sie.

var toAppend,
    $left = $("#left"),
    $right = $("#right");

$left.height() > $right.height() ? toAppend = $right : toAppend = $left;

Verwenden Sie jetzt die Variable toAppend.

0
Lucky Soni 30 Nov. 2013 im 19:23

Während Sie Ihre .dataCard durchlaufen, können Sie so etwas tun, um die Höhe zu überprüfen und die .dataCard entsprechend anzuhängen.

var x = $('#main .dataCard').sort(function (a, b) {
    return $(a).data('cardnumber') - $(b).data('cardnumber');
});

for(var i = 0; i < x.length;i++){
    if($('#left').height() <= $('#right').height()){
        $('#left').append(x[i]);
    }
    else
        $('#right').append(x[i]);  
});

http://jsfiddle.net/trevordowdle/p9q6h/2/

1
Trevor 30 Nov. 2013 im 17:34