Ik heb al gemerkt dat jQuery ander is dan php, vooral met waar je iets plaatst.
ik maak een deck met kaarten voor een memory spel en wil het daarna delen, 9 kaarten dan clonen en de 18 kaarten schudden.

Dit is de code om te testen wat al niet werkt, wat doe ik fout.

$(document).ready(function(){


	kaarten = deck();
	kaarten = delen(kaarten);

});

function deck() {
	//var kaarten = [];
	
	$.getJSON('scripts/deck.php', function(data) {
	  var kaarten = [];
	  $.each(data, function(key, val) {
	    kaarten.push('<div class="kaart" top="2%" left="2%" id="kaart-'+key+'" data-val="'+val['face']+'" data-suit="'+val['suit']+'" data-flip="down"><span class="itop">'+val['face']+'&'+val['suit']+';</span><span class="ibottom">'+val['face']+'&'+val['suit']+';</span></div>');
	  });
	  return kaarten;
	  //$('#game-content').append(kaarten);
	});
	//return kaarten;
	//$('#game-content').append(kaarten);
}

function delen(kaarten) {

    for (var i = 0; i < 9; i++) {
    	
    	$('#game-content').append(kaarten[i]);
    }

    
}



Hele code waarmee ik aan het prutsen ben.

$(document).ready(function(){


	kaarten = deck();
	kaarten = delen(kaarten);

});

function deck() {
	//var kaarten = [];
	
	$.getJSON('scripts/deck.php', function(data) {
	  var kaarten = [];
	  $.each(data, function(key, val) {
	    kaarten.push('<div class="kaart" top="2%" left="2%" id="kaart-'+key+'" data-val="'+val['face']+'" data-suit="'+val['suit']+'" data-flip="down"><span class="itop">'+val['face']+'&'+val['suit']+';</span><span class="ibottom">'+val['face']+'&'+val['suit']+';</span></div>');
	  });
	  return kaarten;
	  //$('#game-content').append(kaarten);
	});
	//return kaarten;
	//$('#game-content').append(kaarten);
}

function delen(kaarten) {
    
    kaarten = schudden(kaarten);
    var negenkaarten = '';
    // 9 kaarten ophalen en clonen
    for (var i = 0; i < 9; i++) {
    	
    	negenkaarten = kaarten[i];
    }
    var clone = negenkaarten.slice(0);
    achttienkaarten = $.merge( $.merge( [], negenkaarten), clone);
    kaarten = schudden(achttienkaarten);
    //return kaarten;
    $('#game-content').append(kaarten);
}


function schudden(kaarten){ 
    for(var j, x, i = kaarten.length; i; j = Math.floor(Math.random() * i), x = kaarten[--i], kaarten[i] = kaarten[j], kaarten[j] = x);
    return kaarten;
}
In het eerste stuk vul je game-content al voor de getjson functie klaar is.
In het tweede stuk vul je die pas als de getjson klaar is, en dat is wat je moet hebben.

Je kan gebruik maken van jquery ajaxStop. En in die functie pas append(kaarten) zetten. AjaxStop wordt pas getriggerd als alle Ajax events op de page klaar zijn.

Reageren