jquery append problem


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

TheGateway

Mitglied
ich weis gar nicht wo das thema so richtig hinpasst ... ich hab folgendes Problem:

Code:
 $("#UserList").append("<li userID='" + data.id + "' onclick='openPrivateChatRoom('" + data.id + "');'>" + user.username + "</li>");

und das ergibt

Code:
<li userid="_Imuk63OMLBHKC-AAAAV" onclick="openPrivateChatRoom(" _imuk63omlbhkc-aaaav');'="">testUser</li>

mir geht es speziell um die onclick function,

- er baut da einfach ein ="" dazu ohne jeglich für mich ersichtlichen Grund,
- auch macht er das ' im Code nicht zum ".
- die userID schreibt er einmal klein einmal groß ...,

-im Code steht userID und er macht userid draus....
- die userid hat einmal ein kleins i und ein Großes ? es ist doch die gleiche variable, wieso verändert er die?
- er verändert also willkürlich groß und kleinschreibung ...

was stimmt mit dem nich? :mad:

das so kleinigkeiten stunden kosten können, ist mir bewusst, aber hier bin ich völlig ratlos!

whats wrong?
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
Um diese ganzen Komplikationen zu umgehen, empfehle ich, den Eventlistener nicht inline zu notieren sondern mit jQuery on hinzuzufügen. Die User-ID hast Du ja schon als Attribut, besser ist es jedoch, sie als data-Attribut zu definieren.
 

TheGateway

Mitglied
klar gibt es viele Wege nach ROM, so auch hier, aber mich würde wirklich interessieren, wieso append so einen Zirkus veranstaltet und das völlig sinnfrei
 

Sempervivum

Erfahrenes Mitglied
Versuche mal, dir den String innerhalb der Klammern von append für sich allein mit console.log() auszugeben. Wenn Du dir das ansiehst, wird es etwas klarer.
 

TheGateway

Mitglied
wenn ich console log mache kommt genau das was ich haben möchte

Code:
     string = "<li userID='" + data.id + "' onclick='openPrivateChatRoom('" + data.id + "');'>" + user.username + "</li>";                     
     $("#UserList").append(string);
     console.log(string);

Code:
<li userID='cZolC-BEHh3cXcpJAAAD' onclick='openPrivateChatRoom('cZolC-BEHh3cXcpJAAAD');'>TestUser</li>
 

Sempervivum

Erfahrenes Mitglied
Achte genau auf dieses:
onclick='openPrivateChatRoom('cZolC-BEHh3cXcpJAAAD');'
So geht es mit den Hochkommas nicht, da muss man entweder verschiedene nehmen oder escapen.
 

Sempervivum

Erfahrenes Mitglied
Verstehe, aber dafür habe ich jetzt keine Erklärung. Vielleicht findet jQuery klein geschriebene Attributnamen schöner?
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…