0

Hi i'm newbies in jQuery and I wanna better way for organize my code.

Code:

$(".color-list.one li:nth-child(2)").on('click', function() {
    $.getJSON("json/a2.json", function(data) {
        //Handle my response
        $('ul.elements-list').html('<li class="elements-item"><span class="tog">' + data.name + '</span><div class="togcont hidden"><p>' + data.info + '</p><p>' + data.size + '</p></div></li>');

        $('ul.elements-list').append('<li class="elements-item"><span class="tog">' + data.name + '</span><div class="togcont hidden"><p>' + data.info + '</p><p>' + data.size + '</p></div></li>');

    });
});

Code after my better organize:

    $(".color-list.one li:nth-child(2)").on('click', function() {
        $.getJSON("json/a2.json", function(data) {
            //Handle my response
            $('ul.elements-list').html('
                <li class="elements-item"><span class="tog">' + data.name + '</span> +
                <div class="togcont hidden"><p>' + data.info + '</p> +
                <p>' + data.size + '</p></div></li>');

            $('ul.elements-list').append('
<li class="elements-item"><span class="tog">' + data.name + '</span>
<div class="togcont hidden"><p>' + data.info + '</p>
<p>' + data.size + '</p></div></li>');

        });
    });

Could you explain me what is no work please!

vallentin
  • 23,478
  • 6
  • 59
  • 81
GilbertOOl
  • 1,299
  • 2
  • 15
  • 27
  • Can you paste your `data` as well.. What does `browser console` show? – Roy M J Jan 20 '14 at 07:27
  • How you format code, is a matter of taste and a personal choice. Format the code as you feel best and/or you could try reading the conversions for the programming language you're writing in. – vallentin Jan 20 '14 at 07:28
  • possible duplicate of [Creating multiline strings in JavaScript](http://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript) – Felix Kling Jan 20 '14 at 07:45

4 Answers4

1

You just forgot to finish up some single quotes

Just Try,

  $(".color-list.one li:nth-child(2)").on('click', function() {
        $.getJSON("json/a2.json", function(data) {
            //Handle my response
            $('ul.elements-list').html('
                <li class="elements-item"><span class="tog">' + data.name + '</span>' +
                '<div class="togcont hidden"><p>' + data.info + '</p>' +
                '<p>' + data.size + '</p></div></li>');

            $('ul.elements-list').append('
<li class="elements-item"><span class="tog">' + data.name + '</span>' +
'<div class="togcont hidden"><p>' + data.info + '</p>' +
'<p>' + data.size + '</p></div></li>');

        });
    });
Rajaprabhu Aravindasamy
  • 66,513
  • 17
  • 101
  • 130
1

Multi-line strings must be appended with a \ at the end.

    $(".color-list.one li:nth-child(2)").on('click', function() {
        $.getJSON("json/a2.json", function(data) {
            //Handle my response
            $('ul.elements-list').html('\
                <li class="elements-item"><span class="tog">' + data.name + '</span> +\
                <div class="togcont hidden"><p>' + data.info + '</p> +\
                <p>' + data.size + '</p></div></li>');

            $('ul.elements-list').append('\
<li class="elements-item"><span class="tog">' + data.name + '</span>\
<div class="togcont hidden"><p>' + data.info + '</p>\
<p>' + data.size + '</p></div></li>');

        });
    });

However if you want a more sufficient way to write your strings, here's something I generally do:

    $(".color-list.one li:nth-child(2)").on('click', function() {
        $.getJSON("json/a2.json", function(data) {

            var r = '<li class="elements-item">';
                    r += '<span class="tog">' + data.name + '</span>';
                    r += '<li class="elements-item">';
                        r += '<span class="tog">' + data.name + '</span>';
                        r += '<div class="togcont hidden">';
                            r += '<p>' + data.info + '</p>';
                            r += '<p>' + data.size + '</p>';
                        r += '</div>';
                    r += '</li>';
            //Handle my response
            $('ul.elements-list').html(r);

            var v = '<li class="elements-item">';
                    v += '<span class="tog">' + data.name + '</span>';
                    v += '<div class="togcont hidden">';
                        v += '<p>' + data.info + '</p>';
                        v += '<p>' + data.size + '</p>';
                    v += '</div>';
                v += '</li>';

            $('ul.elements-list').append(v);
        });
    });

It's cleaner and easier to maintain, IMO. Good luck!

Rayan Bouajram
  • 743
  • 5
  • 12
0

Why you have plus sign in html? MAybe that is the problem.

 $('ul.elements-list').html('
            <li class="elements-item"><span class="tog">' + data.name + '</span> **+**
            <div class="togcont hidden"><p>' + data.info + '</p> **+**
            <p>' + data.size + '</p></div></li>');
sandris
  • 1,478
  • 2
  • 18
  • 34
0

Javascript doesn't support New Lines "\n" in string.

So use use like this:

var html = '\
<li class="elements-item">\
<span class="tog">\
</span>\
</li>';
Waqar Alamgir
  • 9,828
  • 4
  • 30
  • 36