Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] .append() a przeglądarka Internet Explorer
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
patrix007
Witam,

Mam problem z działaniem .append() / .prepend() w przeglądarce IE - nic się nie dopisuje...
wszystko inne na czym testowałem (Opera/Chrome/Safari) bez problemu łapie to.

Przedstawiam przykład:

  1. <title>I have a problem...</title>
  2. <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  3. <style type="text/css">
  4. .tab { border: 1px solid black; }
  5. </style>
  6. </head>
  7. <p>This works in Opera, Firefox, Safari, Chrome... in Internet Explorer doesn't work !! :-/ <strong>Why ?!</strong></p>
  8. <input type="button" id="button" name="button" value="click me!">
  9.  
  10. <table><div id="container"></div></table>
  11.  
  12. <script type="text/javascript">
  13. var i = 1;
  14. $('#button').click(function() {
  15. $("#container").append("<tr><td class=\"tab\">"+i+"</td><td class=\"tab\">"+i+"</td></tr>");
  16. i++;
  17. });
  18. </script>
  19. </body>
  20. </html>


Jak to zmusić do działania ?
Dzięki za pomoc.
erix
Bo do IE musisz dopisywać do
Kod
$('#container tbody')

z tego, co widze we mgle swoich szarych komórek.
zegarek84
nie chodzi o adres tylko o odwieczny problem innerHTML w IE z formularzami i tabelkami...

tutaj jest rozwiązanie na formularz [może i z tabelkami zadziała...]:
http://domscripting.com/blog/display/99

tutaj gościu pisze o zastąpieniu całej tabelki:
an idea to fix innerHTML to table in IE (firefox)

swoją drogą bardzo wygodny jest format JSON - i wystarczy zrobić jedną małą klasę by wszystko dodawało przez DOM - wtedy nie ma najmniejszych problemów ;]
patrix007
Dzięki za odpowiedzi.
Na szczęście obyło się bez klas i innych rozwiązań, udało mi się rozwiązać ten problem chyba w najprostszy sposób i teraz działa wszędzie:

  1. <title>I have a problem...</title>
  2. <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  3. <style type="text/css">
  4. .tab { border: 1px solid black; }
  5. </style>
  6. </head>
  7. <p>Now this works in Opera, Firefox, Safari, Chrome... and Internet Explorer ;-)</p>
  8. <input type="button" id="button" name="button" value="click me!">
  9.  
  10. <div id="container">
  11. </div>
  12.  
  13. <script type="text/javascript">
  14. var i = 1;
  15. $('#button').click(function() {
  16. $("table").append("<tr><td class=\"tab\">"+i+"</td><td class=\"tab\">"+i+"</td></tr>");
  17. i++;
  18. });
  19. </script>
  20. </body>
  21. </html>



Niby tak samo a jednak nie, uwielbiam IE, dla niej trzeba robić specjalne wyjątki sciana.gif

W przypadku jeśli mamy więcej tabelek to rozróżniamy je kontenerami (zwykłe div'y):

  1. var i = 1;
  2. $('#button').click(function() {
  3. $("#container_a table").append("<tr><td class=\"tab\">"+i+"</td><td class=\"tab\">"+i+"</td></tr>");
  4. i++;
  5. });
  6. var j = 1;
  7. $('#buttonn').click(function() {
  8. $("#container_b table").append("<tr><td class=\"tab\">a"+j+"</td><td class=\"tab\">a"+j+"</td></tr>");
  9. j++;
  10. });
everth
@zegarek84 a orientujesz się może czy ten problem występuje przy najnowszych jQuery (np. 1.4.2) - lub czy jest to związane w jakim trybie działa IE (quirks mode)?
zegarek84
nie stosuję jQuery choć jest bardzo intuicyjne - tym bardziej nie przeprowadzałem testów... gdy potrzebuje to piszę w czystym JS ale to też tylko dla siebie - nie jestem programistą - na forum jestem bardziej hobbystycznie winksmiley.jpg

z tego co pamiętam, to choć innerHTML powstało z inicjatywy Microsoftu to właśnie na IE robił często największe problemy - jQuery daaawno temu przeglądałem i nie mogę powiedzieć na 100% ale append tekstu/html'a jest w nim oparty o innerHTML...
Crozin
Cytat
Niby tak samo a jednak nie, uwielbiam IE, dla niej trzeba robić specjalne wyjątki
IE zachowało się w sumie najbardziej poprawnie. Napisałeś błędny kod, to co się dziwisz, że źle działa? Niestety idiotoodporność "porządnych przeglądarek" stoi na lepszym poziomie niż u IE.

Do elementu TABLE nie możesz bezpośrednio wpisać elementu DIV.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.