zoukankan      html  css  js  c++  java
  • 微信小程序-bindtap事件与冒泡

    bindtap就是点击事件

    在.wxml文件绑定:

    1 <text id='textId' data-userXxx='100' bindtap='tapMessage'>cilck here</text>



    在一个组件的属性上添加bindtap并赋予一个值(一个函数名)

    当点击该组件时, 会触发相应的函数执行

    在后台.js文件中定义tapMessage函数:

     1     //index.js
     2     Page({
     3       data: {
     4         mo: 'Hello World!!',
     5         userid : '1234',
     6       },
     7      
     8        // 定义函数
     9       tapMessage: function(event) {
    10         console.log(event.target.id);       // 可获得
    11         console.log(event.target.name);     // 无法获得, 通过target只能直接获取id
    12         console.log(event.target.dataset);  // 要获得其它属性, 需要从dataset(数据集)中获取
    13         // userXxx为自定义的属性名, 但命名方式为:data-userXxx
     
    
            console.log(event.target.dataset.userXxx);//无法获得
            console.log(event.target.dataset.userxxx);//可获得
    17       }
    18     })


    event封装的是该事件的信息, 如上通过它可得到一些数据

    注意一点:

     

    1                      <!-- data-userXxx,这个大写的X要改为-x -->
    2         <text id='textId' data-user-xxx='100' bindtap='tapMessage'>cilck here</text>

    自定义数据时有两种写法:

    定义为data-userXxx时,读取数据event.target.dataset.userxxx

    定义为data-user-Xxx时,读取数据event.target.dataset.userXxx
     

    事件冒泡就是指嵌套事件发生

    如果多层标签嵌套, 里层事件发生后, 其外层会相应发生, 如:

     1      <view bindtap='handout'>
     2         outer
     3         <view bindtap='handmiddle'>
     4           middle
     5           <view bindtap='handinner'>inner</view>
     6         </view>
     7       </view>
     8 
     9       handout: function () {
    10         console.log("out");
    11       },
    12      
    13       handmiddle: function () {
    14         console.log("middle");
    15       },
    16      
    17       handinner: function () {
    18         console.log("inner");
    19       }



    点击inner三个事件都执行, 点击middlek执行handmiddle和handout, 点击out只执行handout

    阻止事件冒泡行为: 将bindtap改为catchtap就行了, 只会触发自身的点击事件

    1  <view bindtap='handout'>
    2     outer
    3     <view catchtap='handmiddle'>
    4       middle
    5       <view bindtap='handinner'>inner</view>
    6     </view>
    7   </view>



    需要理解是, 它阻断自身的冒泡行为

    如上点击inner, 执行的是handinner和handmiddle两个函数

    不管是不是自身触发的点击行为, 传到我这里, 我就将它阻断(不再向上传递)

  • 相关阅读:
    SCILAB简介[z]
    UG OPEN API编程基础 2约定及编程初步
    Office 2003与Office 2010不能共存的解决方案
    UG OPEN API 编程基础 3用户界面接口
    NewtonRaphson method
    UG OPEN API编程基础 13MenuScript应用
    UG OPEN API编程基础 14API、UIStyler及MenuScript联合开发
    UG OPEN API编程基础 4部件文件的相关操作
    UG OPEN API编程基础 1概述
    16 UG Open的MFC应用
  • 原文地址:https://www.cnblogs.com/wcxcc/p/10289669.html
Copyright © 2011-2022 走看看