jquery 选择器不适用于使用 Cassette 的脚本标记内的元素

标签 jquery cassette

当尝试使用 $("#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/

相关文章:

javascript - 如何使用JS发送带附件的邮件?

jquery - 增量列表项类

javascript - 单击时可见列表行下方的全宽 div

javascript - 如何防止 jQuery 选择器包含嵌套元素?

javascript - 局部 View 和 CSS/Javascript

css - 带有指纹 Assets 的 Chrome 工作区

javascript - 在javascript中通过类名选择元素

javascript - 阻止 Cassette v2 缩小 JavaScript 文件

asp.net-mvc-3 - 找不到包含路径 "~/Public/stylesheets/main.less"的资源包