【问题标题】:jQuery before() outputting as string rather than HTMLjQuery before() 输出为字符串而不是 HTML
【发布时间】:2017-03-16 03:28:45
【问题描述】:

我正在尝试使用一些简单的 jQuery 在 Gravity Forms 上的输入之前注入一些 HTML。

这是我的代码:

var formInputs = jQuery( "form li input" )

formInputs.each(function( index ) {
  this.before('<h1>Hello, world!</h1>');
});

这是每个输入的样子

是否与重力形式存在某种形式的冲突?

编辑:我尝试替换

this.before('<h1>Hello, world!</h1>');

this.before(jQuery('&lt;h1&gt;Hello, world!&lt;/h1&gt;'));

我得到的是 jQuery 对象

【问题讨论】:

  • 试试this.before(jQuery('&lt;h1&gt;Hello, world!&lt;/h1&gt;'));
  • @CameronHurd 感谢您的建议,请参阅编辑

标签: javascript jquery wordpress gravity-forms-plugin


【解决方案1】:

thisjQuery.each() 方法中引用的是 JavaScript 对象,而不是该元素的 jQuery 对象,因此如果您想在该元素上使用任何 jQuery 方法,您必须用 jQuery 包装它。

var formInputs = jQuery( "form li input" )

formInputs.each(function( index ) {
  jQuery(this).before( document.createTextNode('<h1>Hello, world!</h1>') );
});

如果你想转义 html 并输出为纯文本,那么document.createTextNode 方法可以帮助你。将您的代码更新为以下内容。

var formInputs = jQuery( "form li input" )

formInputs.each(function( index ) {
  jQuery(this).before( document.createTextNode('<h1>Hello, world!</h1>') );
});

【讨论】:

    【解决方案2】:

    你试过了吗?

    jQuery('<h1>Hello World!</h1>').insertBefore(this);
    

    https://jsfiddle.net/r181ohtj/

    【讨论】:

    • 一开始就把链接搞砸了。固定。
    • 他想转义 HTML 并将其输出为纯文本而不是 HTML。
    • @KhorshedAlam nono 肖恩做对了。尝试注入 HTML。
    • 这就是 jsfiddle 正在做的事情。它正在将 H1 创建为 html。
    • @Sean 很好奇,知道为什么 .insertBefore() 有效而 .before() 无效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2017-05-18
    • 1970-01-01
    • 2013-04-30
    • 2012-05-13
    相关资源
    最近更新 更多