私は Backbone.js を使用しており、テンプレートはスクリプト タグ内にあります。jQueryセレクターを使用してすべての入力フィールドを反復するプラグインがあります。スクリプト タグ内の入力を取得していません。
スクリプトタグ内で定義されたhtmlから属性を取得する方法はありますか?
ありがとうございました!
私は Backbone.js を使用しており、テンプレートはスクリプト タグ内にあります。jQueryセレクターを使用してすべての入力フィールドを反復するプラグインがあります。スクリプト タグ内の入力を取得していません。
スクリプトタグ内で定義されたhtmlから属性を取得する方法はありますか?
ありがとうございました!
<script>
DOM に関する限り、要素は本質的にブラック ボックスであり、DOM が気にしないデータを保持するだけです (具体的には、マークアップではなく、置換不可能な文字データを保持します)。したがって、そうすると、要素内に$('input')
ある s は見つかりません。これは、<input>
s 内に<script>
要素がなく、文字シーケンス を含む文字データ (つまり、文字列) だけだからです。<input>
<script>
'<', 'i', 'n', 'p', 'u', 't', ...
たとえば、次の HTML があるとします。
<div></div>
<script id="tmpl" type="text/x-underscore-template">
<input name="{{name}}">
</script>
次に、これ:
console.log('divs: ' + $('div').length);
console.log('inputs: ' + $('input').length);
は 1<div>
と 0<input>
があり、真実を伝えていることを示します。の内部を見る必要がある場合は、次の<script>
ような方法で文字データを手動で HTML に変換する必要があります。
var $inputs_in_script = $($('#tmpl').html()).filter('input');
の長さは$inputs_in_script
1 になります。
デモ: http://jsfiddle.net/ambiguous/64kjq/
テンプレート エンジンで を処理<script>
している場合は、テンプレート エンジンが提供する HTML でプラグインを呼び出す必要があります。プラグインは、要素のように見える文字列ではなく<input>
実際の要素になるため、sを見つけます。<input>
<input>