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

发布时间 - 2026-01-11 00:33:52    点击率:

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

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

自己分析的实现思路

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    = "<li class='addLabel_divS_ul_sLi' ><input type='checkbox'/>" + $($lis[i]).text() + "</li>";
        //防止多次执行函数导致的多次添加
   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.length; i++){
   
   //判断当前人员列表是否被勾选 勾选的添加标签
   if($(inputAll[i]).prop('checked')){
    $(inputAll[i]).parent('.user_list_li_div_1').siblings('.user_list_li_div_2').find('.div2_lable_ul').empty();
    //循环已选择的li 
    for(let j = 0; j<$length.length;j ++){
     if($($length[j]).find('input').prop('checked')){
      //console.log($($length[j]).text());
      var $li = "<li class='div2_lable_li'>"+ $($length[j]).text() +"</li>";
      
      $(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循环有点多性能肯定不好(先实现功能在优化嘛。。嘿嘿)。。求指教哦。

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


# js  # 微信  # 打标签  # 微信小程序 基础知识css样式media标签  # JS中静态页面实现微信分享功能  # JS 调用微信扫一扫功能  # JS实现微信弹出搜索框 多条件查询功能  # JavaScript微信定位功能实现方法  # 勾选  # 遍历  # 还得  # 都有  # 也没  # 并在  # 可以使用  # 可选  # 几张  # 时要  # 大家多多  # 就可以  # 不写  # 话讲  # 选择了  # 完成了  # 加载  # pre  # brush 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  iOS发送验证码倒计时应用  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何彻底删除建站之星生成的Banner?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel如何实现API版本控制_Laravel版本化API设计方案  如何快速生成专业多端适配建站电话?  html如何与html链接_实现多个HTML页面互相链接【互相】  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  详解CentOS6.5 安装 MySQL5.1.71的方法  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何在云主机上快速搭建网站?  北京的网站制作公司有哪些,哪个视频网站最好?  如何在IIS7中新建站点?详细步骤解析  如何挑选高效建站主机与优质域名?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  javascript日期怎么处理_如何格式化输出  如何在阿里云虚拟主机上快速搭建个人网站?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  如何在Ubuntu系统下快速搭建WordPress个人网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  javascript读取文本节点方法小结  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何续费美橙建站之星域名及服务?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何为不同团队 ID 动态生成多个非值班状态按钮  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  移动端脚本框架Hammer.js  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  高端云建站费用究竟需要多少预算?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  北京专业网站制作设计师招聘,北京白云观官方网站?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法