当尝试使用 $("#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 加载的将其包装在脚本标签内。
我做错了什么?
最佳答案
脚本标记的内容不是文档 DOM 树的一部分。如果您仔细想想,这是有道理的,因为 JavaScript 语法不是有效的 HTML,您可以将 JavaScript 插入到脚本标记之间。
通常,您不会将任何 HTML 放入脚本标记内。 data-onload 属性中存在 JavaScript 不需要使用 script 标签,因此最简单的事情可能就是删除 script 标签。
另一方面,如果您尝试使用此 HTML block 作为模板,例如客户端 MVC 框架。这是我唯一一次看到脚本 type="text/html"有意义。在这种情况下,您需要在模板渲染到 DOM 后搜索 #index 部分。在此之前,此 HTML 实际上并不存在于您可以使用 JQuery 访问它的任何地方。
关于jquery 选择器不适用于使用 Cassette 的脚本标记内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575461/