Подтвердить что ты не робот

Форматирование строк jQuery, которые должны охватывать несколько строк

Одна хорошая вещь с jQuery заключается в том, что синтаксис (например, при цепочке) позволяет вашему script охватывать несколько разрывов строк для удобства форматирования и чтения.

Есть ли эквивалентный/предпочтительный метод, когда вы добавляете большую строку HTML?

Например, было бы неплохо сделать что-то вроде этого:

 $("#theObject")
    .doSomething()
    .append("
        <div>
             <div>
                  Hello World
             </div>
        </div>
    ")

Это не работает, но есть ли что-то похожее на это, чтобы упростить чтение HTML, отформатированного в jQuery script?

4b9b3361

Ответ 1

Добавьте\в конец каждой строки

$("#theObject").doSomething()
.append("
    <div>\
         <div>\
              Hello World\
         </div>\
    </div>\
")

Изменить 2016:

Если вы используете ES6 (ES2015), теперь вы можете использовать шаблонные литералы.

Ответ 2

 $("#theObject")
.doSomething()
.append(
    "<div>"
         +"<div>"
              +"Hello World"
         +"</div>"
    +"</div>"
);

Было бы лучше всего загрузить ваш .append() контент в виде var, например:

var append_me =
     "<div>"
         +"<div>"
              +"Hello World"
         +"</div>"
    +"</div>";

$("#theObject").doSomething().append(append_me);

Ответ 3

Если вы используете jQuery, и ваши строковые литералы будут html-элементами, вы также можете просто создать эти элементы непосредственно на странице и скрыть их, а затем обратиться к тем элементам DOM, а не вводить их как строки. Например, вы можете разместить это на своей странице:

<div id="myContent" style="display: none;">
    <div>
        <div>
            Hello World
        </div>
    </div>
</div>

И затем перепишите свой код следующим образом:

$("#theObject")
.doSomething()
.append(
    $('#myContent').html();
);

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

Ответ 4

Это можно сделать проще!

Не используйте "+" или "/".

Использовать обратную сторону: `
введите описание изображения здесь

$("#theObject").doSomething()
.append(`
    <div>
         <div>
              Hello World
         </div>
    </div>
`)

Ответ 5

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

  • Напишите мою разметку в моем любимом редакторе со всеми пробелами, которые я хочу
  • Сохраните его в том же месте, что и ваш JS файл, с тем же именем + ".txt" в качестве расширения
  • В моем редакторе есть поиск и замена с помощью RegEx, поэтому я все-таки заменяю что-то вроде >[\s]*<
  • Скопируйте однострочный результат в файл Javascript как строковую переменную
  • Отменить замену на .txt файле

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

Ответ 6

var str  = '<div>';
str += '<div>';
str += 'Hello World';

$("#theObject")
    .doSomething()
    .append(str)