Mam wywołanie zwrotne z parametrem items który zawiera tablicę:

[<article>..</article>,<article>...</article>,<article>..</article>]

To, co musiałem zrobić, to dołączyć do tych przedmiotów, więc to, co zrobiłem:

items = items.join('');

Ale kiedy i console.log(items) widzę:

[object HTMLElement][object HTMLElement][object HTMLElement][object HTMLElement] 

Jak prawidłowo łączą tę tablicę?

0
Jürgen Paul 5 wrzesień 2012, 13:50

2 odpowiedzi

Najlepsza odpowiedź

Masz przedmioty, których nie można automatycznie serializować w HTML z join().

Jeśli twoja przeglądarka obsługuje outerHTML, możesz zrobić ...

var html = $.map(items, function(item) { return item.outerHTML; }).join("");

jsfiddle.

W przeciwnym razie możesz zrobić ...

var fauxDocFrag = $("<div />");
$.each(items, function(key, item) { fauxDocFrag.append(item); });
var html = fauxDocFrag.html();

JSFiddle.

1
alex 5 wrzesień 2012, 09:58

Tutaj zrobiłem pełne pojemniki na powyższy problem. Możesz przejść przez link demo.

demo http://codebins.com/bin/4ldqp7n html

<input type="button" id="btn1" value="Get Object Array Text" />
<input type="button" id="btn2" value="Reset" />
<div id="result">
</div>

jQuery

$(function() {
    var items = ["<article>Article-1:Text</article>", "<article>Article-2:Text</article>", "<article>Article-3:Text</article>", "<article>Article-4:Text</article>", "<article>Article-5:Text</article>"];

    $("#btn1").click(function() {
        var result = "";
        $.each(items, function(key, item) {
            if ($(item).text().trim() != "") {
                if (key > 0) result += " ";
                result += $(item).text().trim();
            }
        });
        if (result != "") {
            $("#result").html(result);
            $("#result").show('slow');
        }
    });

    //Reset Result
    $("#btn2").click(function() {
        $("#result").html('').css('display', 'none');
    });
});

demo http://codebins.com/bin/4ldqp7n

1
gaurang171 5 wrzesień 2012, 11:11