1

私は Backbone.js を使用しており、テンプレートはスクリプト タグ内にあります。jQueryセレクターを使用してすべての入力フィールドを反復するプラグインがあります。スクリプト タグ内の入力を取得していません。

スクリプトタグ内で定義されたhtmlから属性を取得する方法はありますか?

ありがとうございました!

4

1 に答える 1

7

<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_script1 になります。

デモ: http://jsfiddle.net/ambiguous/64kjq/

テンプレート エンジンで を処理<script>している場合は、テンプレート エンジンが提供する HTML でプラグインを呼び出す必要があります。プラグインは、要素のように見える文字列ではなく<input>実際の要素になるため、sを見つけます。<input><input>

于 2012-06-18T17:57:23.780 に答える