capitanbuzz
capitanbuzz

Reputation: 69

JQuery append not working in a very simple case

I am learning node.js and socket.io and I am using the example. All is working but all the jquery appends are not working, even simple ones like

$("#messages").append("<p>someone said: </p>");

Jquery is loaded:

$.fn.jquery
"1.11.1"

This is entire index.html:

<!doctype html>
<html ng-app="chatapp">
    <head>
     <title>Socket.IO chat app</title>
     <style>
      * { margin: 0; padding: 0; box-sizing: border-box; }
      body { font: 13px Helvetica, Arial; }
      form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
      form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
      form button { width: 9%; background: rgb(10, 24, 255); border: none; padding: 10px; }
      #messages { list-style-type: none; margin: 0; padding: 0; }
      #messages li { padding: 5px 10px; }
      #messages li:nth-child(odd) { background: #eee; }
        </style>
    </head>
    <body>
     <ul id=messages">Messages: </ul>
     <form action="">
      <input id="m" autocomplete="off" />
      <button>Send</button>
     </form>
<script src="/socket.io/socket.io.js" type="text/javascript"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js" type="text/javascript"></script>
<script> $(document).ready(function(){ $("#messages").append("<p>Initializing... </p>"); });</script>
<script type="text/javascript">
 $(function () {
    var socket = io();
    $('form').submit(function(){
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
    });
    socket.on('chat message', function(msg){
        console.log('incoming: ' + msg);
        $("#messages").append("<p>someone said: </p>");
        console.log('second append ');
        $('#messages').append($('<li></li>').text("hola"));
    });
socket.on('connection', function() {
    console.log("client connected");
});

socket.on('connect_error', function(err) {
    console.log("client connect_error: ", err);
});

socket.on('connect_timeout', function(err) {
    console.log("client connect_timeout: ", err);
});
});
</script>
    </body>
</html>

See that

<script> $(document).ready(function(){$("#messages").append("p>Initializing... </p>"); });</script>

is also not showing.

Any idea?

Upvotes: 0

Views: 2897

Answers (1)

Zamrony P. Juhara
Zamrony P. Juhara

Reputation: 5262

Weird. I usually write that as

  $('<p>someone said:</p>').appendTo('#messages');

And as pointed by Phani Kumar in other answer, you miss one " on id attribute. It should be id="messages".

Upvotes: 1

Related Questions