2016-11-02 3 views
1

いくつかの単純なjQueryを使用してGravity Formsの入力の前にHTMLを挿入しようとしています。ここでjQuery before()HTMLではなく文字列として出力する

var formInputs = jQuery("form li input") 

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

それは重力フォームとの競合のいくつかのフォームがあり、各入力

enter image description here

に次のようになります。ここでは

は私のコードですか?

EDIT:私は

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

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

を交換しようとしたし、代わりに私はjQueryオブジェクトを取得

enter image description here

+0

てみ 'this.before(jQueryの( '

こんにちは、世界

!'));の提案のための' –

+0

@CameronHurdおかげで、 – softcode

答えて

1

これを試しましたか? jQuery.each()メソッド内

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

https://jsfiddle.net/r181ohtj/

+0

が最初にあるリンクを台無し編集を参照してください。一定。 – Sean

+0

彼はHTMLをエスケープして、HTMLではなくプレーンテキストとして出力します。 –

+0

@KhorshedAlam nono Seanはそれを正しく理解しました。 HTMLを挿入しようとしています。 – softcode

3

thisは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>')); 
}); 
関連する問題