It happens because jQuery append spans without addding any white space between them. Since span
is inline element, whitespaces, new lines, etc. cause gaps between them. So you can mimic new line for example:
$td = $("#td_id");
var list = ['A', 'B', 'C'];
$(list).each(function(key, value) {
var $min_span = $('<span>');
$min_span.attr("class", "label label-primary");
$min_span.html(value);
$td.append($min_span, '\n');
});
Demo: http://jsfiddle.net/u5NAA/
The trick is to insert new line \n
, tab \t
or even just space ' '
after each span
element.