jquery选择器不能使用Cassette处理脚本标记内的元素

时间:2012-05-13 21:40:04

标签: 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加载的,它将其包装在脚本标记内。

我做错了什么?

3 个答案:

答案 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">是否是有效的标记/属性组合。

删除脚本标记,您不需要它。