3

当尝试使用$("#index").data("onload")I get back访问数据加载时'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

script 标签的内容不是文档的 DOM 树的一部分。如果您考虑一下,这是有道理的,因为 JavaScript 语法不是有效的 HTML,您可以将 JavaScript 塞入脚本标记之间。

通常,您不会将任何 HTML 放入脚本标记中。data-onload 属性中 JavaScript 的存在不需要使用 script 标签,因此最简单的方法可能就是删除 script 标签。

另一方面,如果您尝试将这部分 HTML 用作模板,例如客户端 MVC 框架。那是我唯一一次看到有意义的 script 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 回答