2015-07-16 2 views
1

Я думал, что это будет просто, но этот код выводит мои пролеты на одной линии.Jquery append() на другой строке?

$("<p/>") 
    .append($("<span/>", { 
     class:"time", 
     text: content.time })) 
    .append($("<span/>", { 
     class: "content", 
     text: content.message 
    })); 

Но так как добавить эти элементы без новой строки, мои пролеты в конечном итоге нужно вручную интервал, который просто не представляется возможным в моем текущем масштабе.

<p><span class="time">now</span><span class="content">Lorem Ipsum ...</span></p> 

Как заставить jQuery вручную добавить мои интервалы на новой строке? Я пробовал использовать .after.

EDIT:

Я предполагаю, что я был немного неясно, до сих пор .append("\n") является то, что я ищу, если есть какие-то более эффективные способы, я все уши, но присоединяя <br/> тег, безусловно, не то, что Я искал.

<p> 
    <span class="time">now</span> 
    <span class="content">Lorem Ipsum ...</span> 
</p> 
+1

Добавляет
тоже. Почему вы ожидаете, что приложение добавит какие-либо пробелы или БР самостоятельно? – mplungjan

+1

Не знаю, и я догадываюсь, что это было неясно. Некоторые элементы нуждаются в разрыве строки в html, чтобы отображать правильно ... Я не хочу, чтобы промежутки, отображаемые на новых строках, а html имели оба промежутка на отдельных строках. – user2397965

ответ

2

Если вы хотите, чтобы HTML элемент будет appeneded к новой строке, вы можете вставить символ новой строки, \n, используя метод .after() перед добавлением второго span. При этом между словами будет пробел (начиная с inline элементов диапазона respect the whitespace in the markup).

Example Here

$("p").append($("<span/>", { 
    class: "time", 
    text: content.time 
}).after('\n')).append($("<span/>", { 
    class: "content", 
    text: content.message 
})); 
+0

А выбор после более одного добавляет? – mplungjan

0

<span> является встроенным элементом. Вы можете изменить его, чтобы блокировать с помощью CSS:

span { 
    display: block; 
} 

или использовать after pseudoelement:

span::after { 
    content: "\A"; 
    white-space: pre; 
} 

или использовать <br />

+4

Я бы не рекомендовал переопределять отображение по умолчанию по умолчанию. – tredzko

0

Это должно работать

$("<p/>") 
    .append($("<span/>", { 
     class:"time", 
     text: content.time })) 
    .append("<br/>") 
    .append($("<span/>", { 
     class: "content", 
     text: content.message 
    })); 
1

Append разрыв строки отдельно, не присоединяя его к тексту, то он работает:

$("<p/>") 
    .append($("<span/>", { 
     class:"time", 
     text: content.time })) 
    .append($("<br />")) 
    .append($("<span/>", { 
     class: "content", 
     text: content.message 
    })) 
    .append($("<br />")); 

working fiddle