0

我是 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>

谢谢你的帮助!

4

1 回答 1

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>
于 2017-02-23T04:41:12.827 回答