react map数组循环嵌套,获取每级属性 和 防止事件冒泡

循环数组,显示和获取属性,并 阻止事件冒泡

![Alt]
console.log结果

html:

      <div className="leaseBox test-1">
                            <ul className="lease_build">
                                {this.state.buildList.map((i, index) => {
                                    return (
                                      <li className={"lease_buildList  buildLi" + index} onClick={this.clickBuild.bind(this, i.id, i.code, index, i.child)} >
                                            <img className="iconBuild shouqi" src="./wisdomPark/image/arrow.png" />
                                            <img src="./wisdomPark/image/iconBuild.png" />
                                          {i.name}
                                        <ul className="lease_floorList floorBox"  >
                                        {i.child.map((item, index) => {
                                            return (
                                              <li className={"floorLi" + index} onClick={this.floorClick} data-value={index} data-id={item.id}>
                                                      <img className="iconFloor shouqi" src="./wisdomPark/image/arrow.png" />
                                                      <img src="./wisdomPark/image/iconFloor.png" />
                                                {item.name}
                                                <ul className="roomList">
                                                      {item.child.map((it, index) => {
                                                        return (
                                                          <li onClick={this.clickRoom} data-id={it.id}> <img src="./wisdomPark/image/iconRoom.png" />{it.name} </li>
                                                        )
                                                      })}
                                                    </ul>
                                                  </li>
                                                    )
                                          })}
                                          </ul>
                                        </li>
                                    )
                                })}
                            </ul>
                        </div>

react:

    // 点击 建筑 i.id, i.code, index, i.child
  public clickBuild(id, code, index, child) {
     console.info('clickBuild: ', id);
    buildIndex = index;
        if ($(".lease_buildList").eq(index).children(".iconBuild").is('.zhankai')) {
          $(".lease_buildList").eq(index).children(".iconBuild").removeClass('zhankai').addClass('shouqi');
          $("." + "buildLi" + index).children("ul").hide();
        } else {
           $(".lease_buildList").eq(index).children(".iconBuild").removeClass('shouqi').addClass('zhankai');
           $(".lease_buildList").eq(index).siblings().children(".iconBuild").removeClass('zhankai').addClass('shouqi');
           $("." + "buildLi" + index).children("ul").show();
          $("." + "buildLi" + index).siblings().children("ul").hide();
           this.initRightFloor(child);
        }
        //over
    }

  public floorClick = (e) => {
    e.stopPropagation();
    // console.info('handleClickTestBox3: ', e);
    console.info('floorClick: ', e.target.dataset.id);
    var floorIndex = Number(e.target.dataset.value);
    if ($("." + "buildLi" + buildIndex).children("ul").children(("." + "floorLi" + floorIndex)).children(".iconFloor").is('.shouqi')){
      $("." + "buildLi" + buildIndex).children("ul").children(("." + "floorLi" + floorIndex)).children(".iconFloor").removeClass('shouqi').addClass('zhankai');
      $("." + "buildLi" + buildIndex).children("ul").children(("." + "floorLi" + floorIndex)).children("ul").show();
    } else {
      $("." + "buildLi" + buildIndex).children("ul").children(("." + "floorLi" + floorIndex)).children(".iconFloor").removeClass('zhankai').addClass('shouqi');
      $("." + "buildLi" + buildIndex).children("ul").children(("." + "floorLi" + floorIndex)).children("ul").hide();
    }
  }


  public clickRoom= (e) => {
    console.info('clickRoom: ', e.target.dataset.id);
    e.stopPropagation();
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值