尝试使用$("#index").data("onload")
访问data-onload时,我会回来'undefined'
:
<script type="text/html">
<section id="index" data-onload="app.load()">
<div data-bind="text:name"></div>
</section>
</script>
没有周围的脚本标记,一切正常。这是使用Cassette加载的,它将其包装在脚本标记内。
我做错了什么?
答案 0 :(得分:6)
脚本标记的内容不是文档的DOM树的一部分。如果您考虑一下,这是有道理的,因为JavaScript语法不是有效的HTML,您可以在脚本标记之间推送JavaScript。
通常,您不会在脚本标记中放置任何HTML。 data-onload属性中存在JavaScript不需要使用脚本标记,因此最简单的方法可能是删除脚本标记。
另一方面,如果您尝试使用这一块HTML作为模板,比如说客户端MVC框架。那是我唯一一次看到有意义的脚本类型=“text / html”。在这种情况下,您需要在模板已渲染到DOM后搜索#index部分。在此之前,这个HTML并不存在于您可以使用JQuery访问它的任何地方。
答案 1 :(得分:0)
具有未知内容类型的脚本元素,它将被忽略。
浏览器不知道如何处理text / html类型脚本。
你只需要:
<section id="index" data-onload="YourTextValue">
<div data-bind="YourTextValue"></div>
</section>
答案 2 :(得分:-1)
据我所知,<script>
- 标签内的代码通常编译为Javascript,不属于DOM。而且我不确定<script type="text/html">
是否是有效的标记/属性组合。
删除脚本标记,您不需要它。