Uruchamiam ten kod:

$('#storeTable').empty();

$('#storeTable').append("<tr>");
$('#storeTable').append("<td>");
$('#storeTable').append(returnData["1"]["ID"]);
$('#storeTable').append("</td>");
$('#storeTable').append("</tr>");

Jednak jeśli uruchomię go wiele razy w jednym obciążeniu strony, element "storeable" staje się wyższy i wyższy z każdym biegiem. Brakowam czegoś oczywistego, czy to jest Gotcha of Jquery / JavaScript, czy to wina mojej przeglądarki (Chrome), czy robię coś złego?

Kodeks najwyraźniej wymaga rafinacji, po prostu staram się uzyskać nagie bole wdrażanie dynamicznej sekcji strony.

Jeśli chcesz jakieś inne szczegóły, zapytaj, a nie tylko obniżanie bez komentarza.

Storelable jest oczywiście stół.

0
Ashley Davies 11 sierpień 2012, 00:04

2 odpowiedzi

Najlepsza odpowiedź

Nie możesz użyć .append(), aby dołączyć częściowe elementy HTML. . append() Dołącza tylko wszystkie utworzone obiekty, a gdy ich dołącza, dołącza je jako ostatnie dziecko obiektu docelowego.

Aby dodać do tego, niektóre przeglądarki wybierają, w jaki sposób możesz lub nie można tworzyć / usunąć zawartości w tabelach.

Zakładając, że #storeTable oznacza znacznik <table>, można przypisać .html(), aby utworzyć całą nową tabelę na raz:

$("#storeTable").html("<tr><td>" + returnData["1"]["ID"] + "</td></tr>");

Działający demo: http://jsfiddle.net/jfriend00/5bvdx/

1
jfriend00 10 sierpień 2012, 20:15
$('#storeTable').empty();

// Will create three rows, one after another
$('#storeTable').append("<tr><td>123</td></tr>");
$('#storeTable').append("<tr><td>456</td></tr>");
$('#storeTable').append("<tr><td>789</td></tr>");

// Will create three rows, each next replaces previous
$('#storeTable').html("<tr><td>123</td></tr>");
$('#storeTable').html("<tr><td>456</td></tr>");
$('#storeTable').html("<tr><td>789</td></tr>");
1
Edward Ruchevits 10 sierpień 2012, 20:13