3

を使用してデータオンロードにアクセスしようとすると、次の$("#index").data("onload")ようになります'undefined'

<script type="text/html">
        <section id="index" data-onload="app.load()">
            <div data-bind="text:name"></div>
        </section>
</script>

周囲のスクリプトタグがなくても、すべてが正常に機能します。これは、スクリプトタグ内にラップするCassetteを使用してロードされます。

私は何が間違っているのですか?

4

3 に答える 3

6

スクリプトタグの内容は、ドキュメントのDOMツリーの一部ではありません。あなたがそれについて考えるならば、これは理にかなっています。なぜなら、JavaScript構文は有効なHTMLではなく、スクリプトタグの間にJavaScriptを押し込むことができるからです。

通常、スクリプトタグ内にHTMLを配置することはありません。data-onload属性にJavaScriptが含まれている場合、scriptタグを使用する必要はないため、最も簡単な方法は、おそらくscriptタグを消去することです。

一方、このHTMLのチャンクをテンプレートとして使用しようとしている場合は、たとえばクライアント側のMVCフレームワークの場合です。意味のあるスクリプトtype="text/html"を見たのはこれだけです。この場合、テンプレートがDOMにレンダリングされた後、#indexセクションを検索する必要があります。それ以前は、このHTMLは、JQueryでアクセスできる場所には実際には存在していませんでした。

于 2012-05-13T21:46:41.660 に答える
0

コンテンツタイプが不明で、無視されるスクリプト要素。
ブラウザは、text/htmlタイプのスクリプトをどう処理するかを知りません。

必要なのは:

    <section id="index" data-onload="YourTextValue">
        <div data-bind="YourTextValue"></div>
    </section>
于 2012-05-13T21:45:06.193 に答える
-1

私の知る限り、<script>-タグ内のコードは通常Javascriptとしてコンパイルされ、DOMの一部ではありません。<script type="text/html">そして、それが有効なタグ/属性の組み合わせでさえあるかどうかはわかりません。

スクリプトタグを削除します。必要ありません。

于 2012-05-13T21:45:27.807 に答える