Easy concatenation in Javascript
When developing stuff in Javascript and jQuery you often need to concat lots of HTML for output. That gets ugly pretty fast.
$("#mydiv").html('<div id="lightbox-container-image-data-box">' + this.something + '<div id="lightbox-container-image-data"><div' + 'id="lightbox-image-details"><span id="lightbox-image-details-caption">' + v + '</span><span id="lightbox-image-details-currentNumber"></span>' + '</div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose">' + '<img src="'+settings.imageBtnClose+'">');
There are a few different ways to concat strings in Javascript and make your code more readable.
Using the + operator:
var html = "<table>" + "<tr>" + "<td>" + "</td>" + "</tr>" + "</table>";
I don’t like this notation. To make it readable you need an extra space after the closing " and you can’t nicely line up all the strings.
Another way is using the Array.join("") method:
var html = [ "<table>", "<tr>", "<td>", "</td>", "</tr>", "</table>" ].join("");
This has the disadvantage that you need a method at the end of the array, and in modern browsers it is a little slower than native concatting.
Another way is using the String.concat() method
var html = (new String("")).concat( "<table>", "<tr>", "<td>", "</td>", "</tr>", "</table>" );
I especially like this last method. Unfortunately the syntax is a little clunky. My colleague Frank suggested a slightly different notation
var html = ''.concat( "<table>", "<tr>", "<td>", "</td>", "</tr>", "</table>" );
This is valid because '' is equivalent to (new String(“”)). This works great and makes passing HTML as an argument to jQuery methods a lot more readable:
$("#mydiv").html(''.concat( '<table>", '<tr><td>', '</td></tr>', '</table>' ));