返回顶部
首页 > 资讯 > 前端开发 > JavaScript >js中下拉菜单生成器dropMenu怎么用
  • 550
分享到

js中下拉菜单生成器dropMenu怎么用

2024-04-02 19:04:59 550人浏览 泡泡鱼
摘要

这篇文章主要介绍了js中下拉菜单生成器dropMenu怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html<div 

这篇文章主要介绍了js中下拉菜单生成器dropMenu怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

html

<div class="input-group">
   <span class="input-group-addon"  >职级:</span>
 <input type="text" class="units fORM-control" id="jobTitle" value="其他" ></input>
 <span class="caret beside"></span>
</div>

js

$(function(){
 var title,
 populationType,
 titleInParty;
 $.ajax({
 url:'/api/v1/user/getUserTypeInfo',
 type:'GET',
 dataType:'JSON',
 success:function (data) {
  title=data.data.title;
  titleInParty=data.data.titleInParty;
  populationType=data.data.populationType;
  partyLabel('jobTitle',title);
  partyLabel('populationType',populationType);
  partyLabel('titleInParty',titleInParty);
 }
 });

function partyLabel(menuID,data){
 new DropMeun({
  'id':menuID,
  "data":data,
  "dataSrc":"name", //数据是下面的这种格式的,你要的是name的值
  "ableSearch":true, //可以搜索
  "style":{ //样式,可选
  "width":173,
  "maxHeight":200,
  "left":0, //定位到哪里
  "top":5,
  "initPos":"left" //设置在哪边出现
  }
 })
 }

3.在页面中引用一个js 文件

(function(vq0599) {
 window.DropMeun = vq0599
})(function() {

 

 function getRealTop(node) {
 return node.offsetParent.tagName.toUpperCase() === 'BODY' ?
 node.offsetTop :
 node.offsetTop + arguments.callee(node.offsetParent)
 }

 function getRealLeft(node) {
 return node.offsetParent.tagName.toUpperCase() === 'BODY' ?
 node.offsetLeft :
 node.offsetLeft + arguments.callee(node.offsetParent)
 }

 


 function DropMeun(option) {
  this.picker = null
  this.self = null
  this.option = option
  this.item = option.item || []
  this.style = option.style || {}
  this.dataList = option.data || []

  this.init()
 return this;
 }

 DropMeun.prototype.init = function () {
  var html = '',
    _this = this

  this.self = document.createElement('ul')
  this.picker = document.getElementById(this.option.id)

  if (! this.picker) {
   throw 'picker is null, making sure that picker\'s ID \''+ this.option.id +'\' is correct'
   return
  }


  if (this.option.ableSearch) {
   html += '<li><input class="dropMeun-searchInput" type="text"></li>'
  }

  this.dataList.forEach(function(data, index) {
   var item   = _this.option.dataSrc ? data[_this.option.dataSrc] : data,
     content = _this.item.render ? _this.item.render(item, data) : item

   html += '<li class="dropMeun-item '+ (_this.item.className || '') +'" data-index="'+ index +'">'+ content +'</li>'
  })

  this.self.classList.add('dropMeun')
  this.self.innerHTML = html
  document.body.appendChild(this.self)

  this.setStyle()
  this.bindEvent()
 }

 DropMeun.prototype.setStyle = function() {

  this.self.style.width =
  this.style.width ?
  (parseInt(this.style.width) - 26) + 'px' :
  '150px'

  this.self.style.maxHeight =
  this.style.maxHeight ?
  (parseInt(this.style.maxHeight) - 26) + 'px' :
  '300px'

  var w = getRealLeft(this.picker) + (parseInt(this.style.left) || 0)
  var h = getRealTop(this.picker) + this.picker.offsetHeight + (parseInt(this.style.top) || 0)

  var realWidth = parseInt(this.self.style.width) + 26  // 26 = dobule(padding + border)

  if (this.style.initPos === 'right') {
   w = w - realWidth + this.picker.offsetWidth
  }

  this.self.style.top = h + 'px'
  this.self.style.left = w + 'px'

 }

 DropMeun.prototype.bindEvent = function() {
  var

  _this = this,
  iEvent = this.picker.nodeName.toUpperCase() !== 'INPUT' ?
       'click' :
       this.picker.type.toUpperCase() === 'TEXT' ?
       'focus' : 'click'

  this.picker.addEventListener('click', function(ev) {
   var ev = ev || window.ev
   ev.stopPropagation()
  })

  //
  this.picker.addEventListener(iEvent, function(ev) {

   document.body.click()  // 触发 window.click 使其他dropMeun关闭

   _this.self.style.display = 'block'
  })

  //
  window.addEventListener('click', function() {
   _this.self.style.display = 'none'
  })

  //
  this.self.addEventListener('click', function(ev) {
   var ev = ev || window.ev
   ev.stopPropagation()

   // 事件委托 item点击
   if (ev.target.classList.contains('dropMeun-item')) {
    var index = parseInt(ev.target.getAttribute('data-index'))
      data = _this.option.dataSrc ?
          _this.dataList[index][_this.option.dataSrc] :
          _this.dataList[index]


    if (iEvent === 'focus') {
     _this.picker.value = ev.target.innerText
    }

  if (_this.item.callbakc) {
   _this.item.callbakc(data, _this.picker, _this.dataList[index], _this.dataList)
  }

    _this.self.style.display = 'none'
   }
  })
  //
  if (_this.option.ableSearch) {

   _this.searchInput = _this.self.getElementsByClassName('dropMeun-searchInput')[0]

   _this.searchInput.addEventListener('keyup', function() {
    var target = this.value.trim(),
      items = _this.self.getElementsByClassName('dropMeun-item');

    [].slice.call(items).forEach(function(item, index) {
     item.style.display =
     item.innerText.indexOf(target) === -1 ?
     'none' : ''
    })

   })
  }
 }

 return DropMeun
}())

4.在页面中引用一个CSS文件

ul,
li {
 list-style: none;
 margin: 0;
 padding: 0;
}

.dropMeun {
 position: absolute;
 border: 1px solid #ccc;
 overflow: auto;
 padding: 8px 12px;
 box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
 background-color: #fff;
 border-bottom-left-radius: 4px;
 border-bottom-right-radius: 4px;
 box-sizing: content-box;
 display: none;
}

.dropMeun li.dropMeun-item {
 min-width: 150px;
 padding: 2px 2px;
 white-space: nowrap;
 overflow: hidden;
 text-overflow: ellipsis;
}

.dropMeun li.dropMeun-item:hover {
 cursor: pointer;
 background-color: rgba(238, 238, 238, 0.8);
}

.dropMeun-searchInput {
 outline: none;
 width: 100%;
 box-sizing: border-box;
}

感谢你能够认真阅读完这篇文章,希望小编分享的“js中下拉菜单生成器dropMenu怎么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网JavaScript频道,更多相关知识等着你来学习!

--结束END--

本文标题: js中下拉菜单生成器dropMenu怎么用

本文链接: https://lsjlt.com/news/75895.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • js中下拉菜单生成器dropMenu怎么用
    这篇文章主要介绍了js中下拉菜单生成器dropMenu怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。HTML<div ...
    99+
    2024-04-02
  • 原生js实现下拉菜单
    下拉菜单在实际生活中也挺常见的,它实现的js代码与tab选卡,手风琴几乎一样,在此不过多赘述。 我仿照苏宁易购官网写了一个下拉菜单,实现代码如下: <!DOCTYPE ht...
    99+
    2024-04-02
  • 原生JS实现悬停下拉菜单
    JS实现悬停下拉菜单,这个是前端面试中遇到的场景题,原理就是修改菜单样式的display属性的属性值从none=>block,具体实现见下,重点关注下面几个部分。 给...
    99+
    2024-04-02
  • 原生JS如何实现导航下拉菜单效果
    这篇文章主要介绍了原生JS如何实现导航下拉菜单效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。这个导航下拉菜单需要实现的功能是:下拉菜单的...
    99+
    2024-04-02
  • html怎么做下拉菜单
    html做下拉菜单的方法:1.新建一个html文件;2.在文件中添加html代码架构;3.在body标签里面使用select标签以及option标签实现下来菜单;4.通过浏览器方式查看设计效果。    具体操作...
    99+
    2024-04-02
  • JavaScript怎么制作下拉菜单
    这篇文章将为大家详细讲解有关JavaScript怎么制作下拉菜单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 JavaScript制作下拉菜...
    99+
    2024-04-02
  • css怎么实现下拉菜单
    这篇文章主要介绍css怎么实现下拉菜单,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css的全称是什么css的全称是Cascading Style Sheets(层叠样式表),它是一种用来表现HTML或XML等文件样...
    99+
    2023-06-14
  • excel下拉菜单怎么修改
    这篇文章主要介绍“excel下拉菜单怎么修改”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“excel下拉菜单怎么修改”文章能帮助大家解决问题。excel下拉菜单修改方式:一、在数据来源中修改。 找到...
    99+
    2023-06-30
  • css下拉菜单怎么设置
    要使用 css 设置下拉菜单,需要遵循以下步骤:创建 html 结构,包括 和 元素。设置默认样式,包括字体、背景颜色和边框。设置选项样式,包括悬停效果和选中状态。设置自定义按钮,以...
    99+
    2024-05-23
    css
  • CSS3怎么制作Dropdown下拉菜单
    这篇文章主要讲解了“CSS3怎么制作Dropdown下拉菜单”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3怎么制作Dropdown下拉菜单”吧!先上...
    99+
    2024-04-02
  • 纯CSS怎么实现下拉菜单
    这篇文章将为大家详细讲解有关纯CSS怎么实现下拉菜单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:将下拉菜单的ul高度设置为0,并且超出部分隐藏掉。设置下拉菜单的高度添加过渡效果,高度为auto...
    99+
    2023-06-08
  • 怎么用CSS实现4级下拉菜单
    这篇文章主要介绍“怎么用CSS实现4级下拉菜单”,在日常操作中,相信很多人在怎么用CSS实现4级下拉菜单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用CSS实现4级下拉...
    99+
    2024-04-02
  • 怎么用css实现下拉菜单功能
    这篇文章主要讲解了“怎么用css实现下拉菜单功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用css实现下拉菜单功能”吧! ...
    99+
    2024-04-02
  • jquery怎么实现简单的下拉菜单
    要实现简单的下拉菜单,可以使用jQuery的`slideDown()`和`slideUp()`方法来实现下拉和收起的效果。首先,在H...
    99+
    2023-08-18
    jquery
  • Html下拉列表菜单与跳转菜单怎么实现
    这篇“Html下拉列表菜单与跳转菜单怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • C#中怎么利用Button实现一个下拉菜单
    C#中怎么利用Button实现一个下拉菜单,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在项目中,要用到按钮实现下拉菜单的功能,而且是在MDI窗体中。当菜单的显...
    99+
    2023-06-17
  • CSS3怎么制作下拉菜单效果
    这篇文章主要介绍“CSS3怎么制作下拉菜单效果”,在日常操作中,相信很多人在CSS3怎么制作下拉菜单效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS3怎么制作下拉菜单...
    99+
    2024-04-02
  • excel下拉菜单选项怎么添加
    这篇文章主要介绍“excel下拉菜单选项怎么添加”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“excel下拉菜单选项怎么添加”文章能帮助大家解决问题。excel下拉菜单选项添加步骤:选中你需要添加下...
    99+
    2023-06-30
  • java怎么实现多个下拉菜单
    在Java中实现多个下拉菜单可以通过使用Swing组件中的JComboBox来实现。可以创建多个JComboBox对象来表示不同的下...
    99+
    2024-03-13
    java
  • c#下拉菜单怎么设置按钮
    在 c# 中设置下拉菜单中的按钮,步骤如下:创建下拉菜单并添加按钮。处理按钮点击事件。添加其他选项(可选)。设置下拉菜单属性(可选)。 如何设置 C# 下拉菜单中的按钮 在 C# 中设...
    99+
    2024-05-14
    c# 点击事件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作