格式化应跨多行的jQuery字符串

格式化应跨多行的jQuery字符串,jquery,formatting,Jquery,Formatting,jQuery的一个优点是语法(例如链接时)允许脚本跨越多个换行符,以便于格式化和可读性 当添加一个大的HTML字符串时,是否有一个等效/首选的方法 例如,这样做会很好: $("#theObject") .doSomething() .append(" <div> <div> Hello World </div> </d

jQuery的一个优点是语法(例如链接时)允许脚本跨越多个换行符,以便于格式化和可读性

当添加一个大的HTML字符串时,是否有一个等效/首选的方法

例如,这样做会很好:

 $("#theObject")
    .doSomething()
    .append("
        <div>
             <div>
                  Hello World
             </div>
        </div>
    ")
$("#theObject")
.doSomething()
.append(
    $('#myContent').html();
);
$(“对象”)
.doSomething()
.append(“
你好,世界
")
这是行不通的,但有没有类似的东西可以使jQuery脚本中格式化的HTML更容易阅读?

$(“#对象”)
 $("#theObject")
.doSomething()
.append(
    "<div>"
         +"<div>"
              +"Hello World"
         +"</div>"
    +"</div>"
);
.doSomething() .附加( "" +"" +“你好,世界” +"" +"" );
最好将.append()内容作为变量加载,如下所示:

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

$("#theObject").doSomething().append(append_me);
var-append\u-me=
""
+""
+“你好,世界”
+""
+"";
$(“#对象”).doSomething().append(append#me);

在每行末尾添加一个\

$("#theObject").doSomething()
.append("
    <div>\
         <div>\
              Hello World\
         </div>\
    </div>\
")
$(“#对象”).doSomething()
.append(“
\
\
你好,世界\
\
\
")
2016年编辑:

如果您正在使用ES6(ES2015),您现在可以使用

var-str='';
str+='';
str+=‘你好,世界’;
$(“对象”)
.doSomething()
.append(str)

在Javascript中使用字符串表示漂亮的HTML树结构没有优雅的方法。您只需使用一组串联,这总是很难看,我想补充一点,它的性能非常糟糕。我就是这么做的:

  • 在我最喜欢的编辑器中用我想要的所有空格编写我的标记
  • 将其保存在与JS文件相同的位置,扩展名为+“.txt”

  • 我的编辑器使用RegEx查找和替换,所以我使用类似于
    >[\s]*的东西来替换all。如果您使用jQuery,并且您的字符串文本将是html元素,您也可以直接在页面上创建这些元素并隐藏它们,然后在DOM中引用这些元素,而不是将它们作为字符串键入。例如,您可以将以下内容放在页面上:

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

    或者,如果只需要引用实际的DOM元素一次,就可以附加它本身,而不是每次都复制它的内容。

    这样做更容易

    不要使用“+”或“/”。

    使用模板文本:`

    $(“#对象”).doSomething()
    .附加(`
    你好,世界
    `)
    
    可以找到关于模板文本的文档



    正如@Geuis所评论的,这只能从es2015/ES6()中使用。

    +1个好问题。这对我来说一直是个恼人的情况。事实上,我想这不仅仅局限于HTML元素。。。很明显,你可以把任何东西都写进《myContent》。@Rudism:非常正确。有时候这很有用。是的——在可能的情况下,像这样使用DOM真的很有用。主要的例外情况可能是,当您编写使用长字符串并在站点的许多页面上被调用的库代码时。库只被加载一次(假设正确的缓存策略),因此将任何长字符串放在那里比放在页面内容本身更有效。iamkoa…很好!事后看来很简单很明显,但我没有考虑过。谢谢你,乔希。是的,这肯定会奏效,但目标之一是让其他人都能读懂。理想情况下,换行和缩进将保留在.js块中,以供其他人将来维护。这是我的第一个想法。不完美,但比把所有内容塞进一行更具可读性。不过,有演出热播吗?多次连接声明的变量是否会影响当前浏览器中的性能。以前曾有过一次性能上的成功,当时最好的方法是将字符串推入一个数组中,并在最后连接它们。但我已经做了一些测试,现在大多数浏览器都优化了字符串连接。我认为这是有效的。它几乎适用于任何其他编程语言。是的,这是有效的javascript。我想在过去,我必须在斜线之前加空格,才能让它在所有浏览器中正常工作。这在IE中对我来说是失败的,因为“未终止的字符串常量”@josh我也遇到过。问题是反斜杠后面不能有任何字符(包括空格)。这是因为反斜杠是一个
    $("#theObject")
    .doSomething()
    .append(
        $('#myContent').html();
    );
    
    $("#theObject").doSomething()
    .append(`
        <div>
             <div>
                  Hello World
             </div>
        </div>
    `)