FB.XFBML.parse () für ein einzelnes Element führt nichts aus

Ich habe eine große Seite mit der Schaltfläche "Mehr laden" unten. Mit jedem Klick auf "Mehr laden" wird mehr Inhalt über AJAX geladen. Ein Teil dieses Inhalts sind Facebook-ähnliche Buttons:

<div class="fb-like" data-href="http://mysite.com/a<?=$x ?>" data-width="100" data-layout="button_count" data-show-faces="false" data-send="false"></div>

Nachdem ich die zusätzlichen Inhalte geladen habe, kann ich Facebook bitten, die gesamte Seite mit neu zu analysierenFB.XFBML.parse(); (was dazu führt, dass sich diese Divs in echte Like Buttons verwandeln). Dies funktioniert einwandfrei, wird jedoch sofort langsam, da Facebook den Inhalt, der sich bereits auf der Seite befand, neu analysiert und nicht nur den neuen Inhalt. Jedes Mal, wenn der Benutzer auf "Mehr laden" klickt, wird die gesamte Seite analysiert, sodass die FB-Funktion immer mehr tun kann.

Hier ist die gute Nachricht: diedocs für die Analysemethode von FB sagen:

... um nur einen Teil eines Dokuments auszuwerten, können Sie ein einzelnes Element übergeben.

FB.XFBML.parse(document.getElementById('foo'));

Also dachte ich, okay, wenn der Benutzer auf "Mehr laden" klickt, packe ich diesen frischen HTML-Code in einen eindeutigen CodedivVerwenden Sie dann jQuery, um durch das Fenster zu gehendiv, finde alle Facebook-Tags und fordere Facebook auf, nur diese zu analysieren. Gute Idee, oder? Aber es geht nicht. Der Code scheint die Elemente nach dem Laden an Facebook weiterzuleiten, aber sie werden nicht analysiert. Code:

// "c" is my container div (a jQuery object, i.e. c = $('#container'); ) 
// "load more" button
$('#loadmore').click(function() {
    $.ajax({
        url: "/loadmore.php",
        success: function(html) {
            if(html) {
                // wrap new HTML in special div & append
                newDivName = "d"+String(new Date().valueOf());
                var $newHtml = $("<div id='"+newDivName+"'>"+html+"</div>");
                c.append($newHtml);

                // walk through new HTML and get all Facebook "like" buttons and parse them
                $('#'+newDivName+' .fb-like').each(function() {
                    FB.XFBML.parse(this);
                });
            }
        }
    });

});

Es gibt keine Fehlermeldung, es werden nur keine Ergebnisse erzeugt. Der Debug-Code für die Konsole sieht perfekt aus, es werden alle richtigen Elemente gefunden.

AKTUALISIEREN spiele damit auf dieser einfachen jsfiddle:http://jsfiddle.net/pnoeric/NF2jz/4372/

UPDATE 2 Ich habe auch versucht, den Code von HTML5 auf FBML zu ändern (Klicken Sie auf dieser Seite auf "Code abrufen" um den Unterschied zu sehen), der nicht nur das gleiche Ergebnis hatte, sondern jetzt auch nur noch eine zusätzliche Taste für den Ajax-Aufruf anstelle von zwei Tasten laden würde. Also wurde es schlimmer! Sie können hier mit der FBML-Version spielen:http://jsfiddle.net/pnoeric/4QkbX/2/

Antworten auf die Frage(2)

Ihre Antwort auf die Frage