zoukankan      html  css  js  c++  java
  • 小程序基础(二)

    小程序中e.target和e.currentTarget的区别

    事件捕获与事件冒泡

    事件捕获是从外到内,事件冒泡是从内到外。

    注意:不管是不是冒泡事件,都不会改变事件传递的参数值,都还是在dataset中获取(****)

    target:指事件源组件对象 currentTarget:当前组件对象

    分两种情况是属于冒泡事件还是非冒泡事件

    第一种情况:属于冒泡行为bind

    wxml页面代码:

    <view id="outter" bind:tap="tap1">
       outer view
       <view id="middle" bind:tap="tap2">
         middle view
         <view id="inner" bind:tap="tap3">
           inner view
          </view>
       </view>
    </view>
    

    js代码:

     tap1: function (e) {
        console.log(1, e)
      },
      tap2: function (e) {
        console.log(2, e)
      },
      tap3: function (e) {
        console.log(3, e)
      }
    

    运行结果:

    img

    点击子元素inner,但由于是冒泡行为父类元素middle和outter都触发,从结果可以看出:

    父类middle和outter,target的id都是等于inner(子元素的id);

    middle的currentTarget的id是middle,outter的currentTarget的id是outter;

    第二种情况:非冒泡行为 catch

    wxml代码: (和第一种不一样的点在于都改成catch:tap)

    <view id="outter" catch:tap="tap1">
       outer view
       <view id="middle" catch:tap="tap2">
         middle view
         <view id="inner" catch:tap="tap3">
           inner view
          </view>
       </view>
    </view>
    

    js代码:

     tap1: function (e) {
        console.log(1, e)
      },
      tap2: function (e) {
        console.log(2, e)
      },
      tap3: function (e) {
        console.log(3, e)
      }
    

    结果:

    img

    因为在middle和inner都设置了非冒泡行为,所以都只是运行到自己的不会往上走,这个结果是分别点击了middle和inner,以上这些可以得出:

    当事件没有冒泡行为时,target和currentTarget都指向事件触发的对象本身。

    需要注意的:还有一种情况是如果inner是冒泡,middle是非冒泡,点击inner的结果

    img

    结果还是和第一种一样

    总结:

    1.当全是冒泡行为时:

    target:事件源组件对象(事件的冒泡源头)

    currentTarget:当前组件对象(就是当前所处的对象)

    2.当没有冒泡行为时:

    target和cueerntTarget是一样的,就是当前所处的对象

  • 相关阅读:
    [转]数值分析——多项式插值之Lagrange插值
    [转]上拉电阻&下拉电阻&高阻态
    [转]Verilog学习笔记基本语法篇(十三)...............Gate门
    Spring MVC中的Controller是Serlvet吗?
    preparestatement和statement的区别&&简单的SQL注入
    jquery局部变量和全局变量的错误
    js 中{},[]中括号,大括号使用详解
    Java数据库学习之SQL语句动态拼接
    jquery中关键字写错导致的错误——dataType写成dateType(data写成date)
    一次隐蔽的while死循环
  • 原文地址:https://www.cnblogs.com/chmily/p/12055147.html
Copyright © 2011-2022 走看看