我对OnsenUI来说是全新的,到目前为止,我真的很享受这一切的外观和感觉。 我正在使用普通的JS和一些小jQuery。
我的问题是: 当我使用ons-template时,我无法使用JS或jQuery选择任何内容(ID,Class等)。
当我删除它时,我没有任何问题,buuuut我使用ons-splitter作为我的导航方法。 (注意:我也尝试了标签等)
我有什么问题吗?
<ons-splitter>
<ons-splitter-side id="menu" side="left" width="220px" collapse swipeable>
<ons-page>
sidebar content etc...
</ons-page>
</ons-splitter-side>
<ons-splitter-content id="content" page="main.html"></ons-splitter-content>
</ons-splitter>
<!-- I want to select the ons-list-item #book with jQuery -->
<ons-template id="main.html">
<ons-page>
<ons-toolbar>
<div class="left">
<ons-toolbar-button onclick="fn.open()">
<ons-icon icon="md-menu"></ons-icon>
</ons-toolbar-button>
</div>
<div class="center top-bar-title">Title</div>
</ons-toolbar>
<ons-list>
<ons-list-item id="book">Books</ons-list-item>
</ons-list>
</ons-page>
</ons-template>
<script>
$("#book").click(function(){
alert("TEST");
});
</script>
感谢您的帮助!
答案 0 :(得分:2)
这里的问题是,当执行脚本时,模板仍然没有加载到splitter-content中,因此没有id为“book”的元素。
解决方案是在main.html页面的初始化时添加事件监听器。这样,您确定已加载模板,您可以选择该模板上的任何ID。
注意:请务必在<ons-page>
元素上添加ID。
如何在页面初始化时添加侦听器或调用函数:
<ons-splitter>
<ons-splitter-side id="menu" side="left" width="220px" collapse swipeable>
<ons-page>
sidebar content etc...
</ons-page>
</ons-splitter-side>
<ons-splitter-content id="content" page="main.html"></ons-splitter-content>
</ons-splitter>
<!-- I want to select the ons-list-item #book with jQuery -->
<ons-template id="main.html">
<ons-page id="main">
<ons-toolbar>
<div class="left">
<ons-toolbar-button onclick="fn.open()" tappable>
<ons-icon icon="md-menu"></ons-icon>
</ons-toolbar-button>
</div>
<div class="center top-bar-title">Title</div>
</ons-toolbar>
<ons-list>
<ons-list-item id="book" tappable>Books</ons-list-item>
</ons-list>
</ons-page>
</ons-template>
<script>
document.addEventListener("init",function(event){
if(event.target="main"){
$("#book").click(function(){
alert("TEST");
});
}
});
</script>