javascript - toggle() 只执行一次 下次要执行要点两次
PHPz
PHPz 2017-04-11 13:31:33
[JavaScript讨论组]

为了美化 select下拉框 用的是ul li代替的 具体html代码如下:

再来顶级栏目

  • 顶级分类
  •   新闻资讯
  •     企业新闻
  •     行业资讯
  •     产品问答
  •     测试二级栏目
  •   测试顶级栏目
  •   再来顶级栏目
  •     顶级二级栏目
  •     111
  •     222
  •     dwz
  •     再来二级的
  •   二次二级栏目

上面的代码 需要一个弹出层触发才会出来的 然后通过点击p的 select-title 来让下面的ul显示出来 具体的 js代码如下:select方法 是触发点击显示隐藏的

$(document).on('click','.addinfo,.add',function(){
    $('.select-title span').attr('data-val',$(this).siblings('.edit').attr('val'));
    $('.select-title span').text($(this).attr('txt'));
    layer.open({
         area: ['60%', '80%'],
          type: 1,
          title: false,    
          shift: 2,
          content: $('#add')
        });
    select();
});

function select(){
    $(".select-title").on("click",function(){
        $(".select-list").toggle();
        return false;
    });
}

不知道怎么回事 第一次在这个弹出层里点击正常出来 把弹出层关闭之后再打开弹出层 第二次点击点不动 再关闭打开 第三次又能出来了

PHPz
PHPz

学习是最好的投资!

全部回复(2)
天蓬老师

你在每次打开layer的时候都调用了select()方法,方法中重新绑定了click事件$(".select-list").toggle();(个人见解,没看过jquery的事件实现方式,不过查了下button的确绑定了多个事件)重复绑定了事件,也就说执行了一次隐藏和现实的toggle方法,所以等于无效。第三次点击就等于绑了三个事件

PHP中文网

是因为你绑定了两次 。

这是实际开发中经常出现的bug.

你每次绑定的时候 先把这个事件off()掉就可以解决了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号