热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

js仿微信公众平台打标签功能

这篇文章主要为大家详细介绍了js仿微信公众平台打标签功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

今天刚刚完成了一个小功能:“仿微信公众平台的-打标签”,随笔记下欢迎纠错:

操作介绍:选择人物列表点击“打标签”按钮可实现对当前已选择的人物添加新的标签;

自己分析的实现思路

1.点击“打标签”时要“知道”那些人物被选择了~~遍历当前人物列表          

2.得到被选择人物列表后还得知道他们下面的标签都有啥~~遍历选择人物的标签列表         

3.得到当前可以使用的标签列表~~额..还是遍历得到

废话讲的有点多。来几张图片压压惊。网页效果\(^o^)/~

1.加载完毕的初期“打标签”不可选没有功能。。

2.当任务列表有选择的时候可以点击“打标签”并弹窗显示可编辑的标签列表(列表内容取自右侧);

3.选择标签后确定修改当前已选择的人物的标签;

概流程就这样了,代码

基本也页面结构:

html和css大家都会的就不写啦。。。下面是主要js代码:

function addLabel (){
 
 $('.addLabel_divS_ul_s').find('li').remove();
 $('#addLable_btn').css({'cursor':'pointer',"background":'#fff'});
 
 $('#addLable_btn').on('click',function(){
  // 向隐藏ul(即弹窗里的ul)中添加li 
  var $lis    = $('.ulLabelS>.lable_list_li_append_li>.lable_list_li_strong_2'),
   $addLabelDivSUlS = $('.addLabel_divS_ul_s'),
   $inputAll   = $('#queryPageForm input[type="checkbox"]'),
   $inputLength  = $inputAll.length;//人物列表
  
  //循环已有的li列表放进备选ul中
  for(let i=0 ; i<$lis.length; i++){
   var $li    = "
  • " + $($lis[i]).text() + "
  • ";         //防止多次执行函数导致的多次添加 if($addLabelDivSUlS.find('li').length != $lis.length){ //console.log('zhixing '); $addLabelDivSUlS.append($li); }; } //循环已勾选的人物列表读取已有的标签反显到备选ul的li中(li里面的input勾选) for(let i=0; i<$inputLength; i++){ //判断当前人员列表是否被勾选 勾选的添加标签 if($($inputAll[i]).prop('checked')){ //$length : 人物固有标签的长度 var $thisLi = $($inputAll[i]).parent('.user_list_li_div_1').siblings('.user_list_li_div_2').find('.div2_lable_ul>li'); $length = $thisLi.length;//备选标签ul for(let j = 0; j <$length ; j ++ ){ //console.log($($thisLi[j]).text()); for(let k = 0; k <$addLabelDivSUlS.find('li').length ; k++){ if($($thisLi[j]).text() == $($addLabelDivSUlS.find('li')[k]).text()){ $($addLabelDivSUlS.find('li')[k]).find('input').prop('checked',true) } } } } }; $('#addLabel_divS_wrp').show(); $('#addLabel_divS').show(); }); }

    上面是获取备选标签和“找到”选中的人物中的标签列表并在备选标签中进行勾选,当弹窗后我们还得知道当前人物列表哪个是选中的,我们在把选中的备选标签添加到当前选中的人物上,就实现修改标签的功能了。。。。。看下面。。。。

    /*
     * 取消 确定
     */
    function clickBtnS (){
     var $addLabelDivS = $('#addLabel_divS'),
      inputAll  = $('#queryPageForm input[type="checkbox"]');
      
      
     //确定
     $('.addLabel_divS_div1>.btn1').on('click',function(){
      
     var $length   = $('.addLabel_divS_ul_s>.addLabel_divS_ul_sLi');//备选标签ul
     
      //找到勾选的li 添加当前勾选的标签 人物列表
      for(let i=0; i";
          
          $(inputAll[i]).parent('.user_list_li_div_1').siblings('.user_list_li_div_2').find('.div2_lable_ul').append($li);
         }
        }
       }
      };
      
      $('.addLabel_divS_ul_s').find('li').remove();
      $('#addLabel_divS_wrp').hide();
      $addLabelDivS.hide();
     });
     
     //取消
     $('.addLabel_divS_div1>.btn2').on('click',function(){
      $('.addLabel_divS_ul_s').find('li').remove();
      $('#addLabel_divS_wrp').hide();
      $addLabelDivS.hide();
     });
    };
    

    至此就可以实现和微信的打标签相同的效果了。。也没看微信的源码不知道人家这么写的。。自知这个实现思路for循环有点多性能肯定不好(先实现功能在优化嘛。。嘿嘿)。。求指教哦。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


    推荐阅读
    • 嵌入式开发环境搭建与文件传输指南
      本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
    • 本文详细介绍如何使用CSS自定义HTML5视频播放器的样式,涵盖常见属性及跨浏览器兼容性问题。发布时间:2020-09-14 14:46:29;来源:亿速云;阅读量:58;作者:小新。 ... [详细]
    • 本文详细介绍了JSP的三大指令:page、include和taglib,重点探讨了静态包含与动态包含的区别及其应用场景,并解释了如何使用taglib指令引入第三方标签库。 ... [详细]
    • 如何清除Chrome浏览器地址栏的特定历史记录
      在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
    • 解决TensorFlow CPU版本安装中的依赖问题
      本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
    • 探索新一代API文档工具,告别Swagger的繁琐
      对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
    • 本文探讨了在构建应用程序时,如何对不同类型的数据进行结构化设计。主要分为三类:全局配置、用户个人设置和用户关系链。每种类型的数据都有其独特的用途和应用场景,合理规划这些数据结构有助于提升用户体验和系统的可维护性。 ... [详细]
    • Linux中的yum安装软件
      yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
    • 鼠标悬停出现提示信息怎么做
      概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
    • 精致小屏灰色风格苹果CMS v10模板,支持DIY主题管理系统
      探索一款专为影视站设计的苹果CMS v10模板,具备强大的主题管理系统和500多个设置项,无需二次开发即可轻松配置。下载地址:https://www.mytheme.cn/maccms/244.html,演示地址:http://demo.mytheme.cn/index.php?id=244。 ... [详细]
    • 本文详细介绍如何使用 HTML5 和 JavaScript 实现一个交互式的画板功能。通过具体代码示例,帮助读者理解 Canvas API 的基本用法及其在绘图应用中的实际应用。 ... [详细]
    • 气象对比分析
      本文探讨了不同地区和时间段的天气模式,通过详细的图表和数据分析,揭示了气候变化的趋势及其对环境和社会的影响。 ... [详细]
    • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
    • CSS高级技巧:动态高亮当前页面导航
      本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
    • 在使用 Vue CLI 创建的项目中,引入样式模块(CSS Module)后,发现类名被自动修改。本文将详细解释这一现象并提供解决方案。 ... [详细]
    author-avatar
    cecillalurw_689
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有