OnsenUI - 用jQuery / JS选择元素(ons-template问题?)

时间:2017-02-21 19:04:56

标签: jquery html cordova onsen-ui onsen-ui2

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

感谢您的帮助!

1 个答案:

答案 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>