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


Posted in Javascript onApril 08, 2017

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

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

自己分析的实现思路

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

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

 

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

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

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

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

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

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

概流程就这样了,代码

基本也页面结构:

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

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循环有点多性能肯定不好(先实现功能在优化嘛。。嘿嘿)。。求指教哦。

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

Javascript 相关文章推荐
js兼容标准的表格变色效果
Jun 28 Javascript
多个$(document).ready()的执行顺序实例分析
Jul 26 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
javascript实现自动输出文本(打字特效)
Aug 27 Javascript
深入浅析AngularJS和DataModel
Feb 16 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
Apr 20 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
Vue源码解读之Component组件注册的实现
Aug 24 Javascript
vue实现扫码功能
Jan 17 Javascript
利用JS判断元素是否为数组的方法示例
Jan 08 Javascript
详解node.js搭建代理服务器请求数据
Apr 08 #Javascript
无循环 JavaScript(map、reduce、filter和find)
Apr 08 #Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 #Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 #Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 #Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 #Javascript
js实现图片加载淡入淡出效果
Apr 07 #Javascript
You might like
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
网页javascript精华代码集
2007/01/24 Javascript
简单三步,搞掂内存泄漏
2007/03/10 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
Delphi CS笔试题
2014/01/04 面试题
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
小浪底导游词
2015/02/12 职场文书
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python