jQuery的.html()的纯JavaScript替代品

Lir*_*roy 4 javascript jquery

以下代码用于ajax加载div.

我唯一的问题是.html()渲染原始 html,所以我认为用纯JS替换它可能是一个好主意,这样我的视图就可以清除任何转义的原始html.

我很想听听你对此的看法.

$(document).ready(function() {
      $('.ajax_load').each(function(index, element) {
        var url = $(element).data('remote-url')
        if (url) {
          $.get(url, function(responseText) {
            $(element).html(responseText);
          })
        } else {
          console.log("missing url for ajax!")
        }
      })
    })
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 8

你可以使用textContent:

Node.textContent属性表示节点及其后代的文本内容.

element.textContent = responseText;
Run Code Online (Sandbox Code Playgroud)


Sco*_*cus 7

jQuery 的.html()方法接受一个字符串并通过 HTML 解析器运行该字符串,以便可以处理任何 HTML 标记并更新 DOM。jQuery 的.text()方法也接受一个字符串,但该字符串(即使它包含 HTML)不会传递到 HTML 解析器进行处理,并且任何标记都会被转义并作为文本内容包含在页面中。


如果您不想使用 jQuery,则可以.html()使用 DOM .innerHTML( https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML ) 属性完成相同的操作。

如果您想完成与 相同的事情.text(),您可以使用专有/旧版.innerText( https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText ) 属性或标准textContent( https: //developer.mozilla.org/en-US/docs/Web/API/Node/textContent ) DOM 属性(但 IE 9 之前的 IE 不支持后者)。

  • `innerText` 不是标准的,它是 IE 的东西 (3认同)
  • @ScottMarcus 我没有添加括号,我使用 markdown 将文本转换为链接。另外,我不确定您是否了解 Polyfill 的工作原理。它只是检查某个功能是否存在,并在 javascript 中为旧版浏览器重新创建它。它不像插件或某些 Flash 小程序等。 (3认同)
  • @ScottMarcus,你确实意识到这是互联网……每个人都直接参与这个答案。 (2认同)
  • 我的最初修订获得了批准,因为社区一致认为它提高了易读性。您的帖子很难通过长 URL 进行跟踪。我只是想帮忙。请不要这么消极。 (2认同)