jQuery before()输出为字符串而不是HTML

1 人关注

我试图用一些简单的jQuery在Gravity Forms的输入前注入一些HTML。

以下是我的代码。

var formInputs = jQuery( "form li input" )
formInputs.each(function( index ) {
  this.before('<h1>Hello, world!</h1>');

下面是它在每个输入上的样子

是否与Gravity Forms有某种形式的冲突?

编辑:我试着替换了

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

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

而我得到的是jQuery对象

2 个评论
试试 this.before(jQuery('<h1>Hello, world!</h1>'));
@CameronHurd 谢谢你的建议,请看编辑。
javascript
jquery
wordpress
gravity-forms-plugin
softcode
softcode
发布于 2016-11-03
2 个回答
Khorshed Alam
Khorshed Alam
发布于 2016-11-03
0 人赞同

this 里面的 jQuery.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>') );