工作中碰到一个问题,一个页面中碰到多个地方需要弹窗数据。

网上找了一圈,没有找到合适的,所以自己写了一个。

兼容IE7+,chrome。其它未测试。

需求:点击任意的输入框(也可其它元素,代码中有注释),在输入框下,出现弹窗。出现我需要的数据

效果:

窗口1

窗口2

代码如下:

<style type="text/css">
#on_select{
<span style="white-space:pre"> </span> visibility:hidden;/*初始隐藏*/
<span style="white-space:pre"> </span> width: 350px;
<span style="white-space:pre"> </span> height: 280px;
<span style="white-space:pre"> </span> position: absolute;
<span style="white-space:pre"> </span> z-index: 200;
<span style="white-space:pre"> </span> background-color: white;
<span style="white-space:pre"> </span> color: black;
<span style="white-space:pre"> </span> border: 1px solid #2b8fce;
<span style="white-space:pre"> </span> top:0px;
<span style="white-space:pre"> </span> left: 0px;
}
#on_select ul{
<span style="white-space:pre"> </span>list-style:none; /* 去掉ul前面的符号 */
    margin: 0px; /* 与外界元素的距离为0 */
    padding: 0px; /* 与内部元素的距离为0 */
    width: 100%; /* 宽度根据元素内容调整 */
}
#on_select ul li
{
    float:left; /* 向左漂移,将竖排变为横排 */
    cursor: pointer;
}
#div_ul1{
background-color: #2b8fce;
height: 30px;
}
#div_ul1 li{
<span style="white-space:pre"> </span>height: 25px;
<span style="white-space:pre"> </span>padding-top: 5px;
<span style="white-space:pre"> </span>width: 20%;
<span style="white-space:pre"> </span>color:#e6f9ff;
}
#div_ul2 li{
<span style="white-space:pre"> </span>width: 100px;
<span style="white-space:pre"> </span>font-size: 12px;
<span style="white-space:pre"> </span>color: #666;
<span style="white-space:pre"> </span>height: 25px;
<span style="white-space:pre"> </span>padding-left:10px;
<span style="white-space:pre"> </span>text-align: left;
}
<pre name="code" class="html"><style>

<div id="on_select">
<div style="height: 25px;padding-top: 5px;background-color:#eef1f8;"><a style="cursor: pointer;" onclick="hd()">关闭</a></div>
<ul id="div_ul1">
<li onclick="changeul2(this)" id="li1" value="1">A-E</li>
<li onclick="changeul2(this)" value="2">F-J</li>
<li onclick="changeul2(this)" value="3">K-O</li>
<li onclick="changeul2(this)" value="4">P-T</li>
<li onclick="changeul2(this)" value="5">U-Z</li>
</ul>
<div style="height: 2px;width: 100%;background-color:#66c8e8;display: block;"></div>
<ul id="div_ul2">
</ul>
</div>//此段代码,必须写在body标签中
<pre name="code" class="html"><script type="text/javascript">
var ctpage;//当前页
var allpage;//总页数
var size=24;//大小
var s;//总数
var ctclick;//当前被点击的输入框,因为多个输入框使用。所以需要记录
/* var tab=$("#table_3");//用于IE浏览器
var version = $.browser.version;//用于IE浏览器 */
					$("#mainMine").click(function(){/* 设置需要弹窗的输入框,当然可以选其它你需要作为弹窗点的元素 */
changeValue(document.getElementById("mainMine"));
});
					$("#otherMainMine").click(function(){/* 设置第二个弹窗点 */
changeValue(document.getElementById("otherMainMine"));
});
<pre name="code" class="html"><span style="white-space:pre"> </span>/* 多个地方需要,如上,多设置几个 */
</pre>					function changeValue(vid){//调用此函数,出现弹窗
<span style="white-space:pre">						</span>ctclick=vid;changeRect();
<span style="white-space:pre">						</span>}
<span style="white-space:pre">					</span>function changeRect(){ //设置选择框的位置和数据
<span style="white-space:pre">						</span>var d=document.getElementById("li1");//获取第一个类别
<span style="white-space:pre">						</span>changeul2(d);//设置默认页面
<span style="white-space:pre">						</span>$("#on_select").css("visibility","visible");//选择框设置为显示
<span style="white-space:pre">							</span>$("#on_select").css("top",$(ctclick).offset().top+$(ctclick).height());
<span style="white-space:pre">								</span>/*<span style="font-family: Arial, Helvetica, sans-serif;">$(ctclick).offset().top获取需要弹窗元素距离最外层父元素顶部的绝对距离</span><span style="font-family: Arial, Helvetica, sans-serif;">*/</span>
$("#on_select").css("left",$(ctclick).offset().left);
<pre name="code" class="html"><span style="white-space:pre">								</span>/*<span style="font-family: Arial, Helvetica, sans-serif;">$(ctclick).offset().left获取需要弹窗元素距离最外层父元素左边的绝对距离</span><span style="font-family: Arial, Helvetica, sans-serif;">*/</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html">						};
/*到此实现弹窗*/
$("#on_select").mouseleave(function(){//鼠标离开弹窗效果
$("#on_select").css("visibility","hidden");
}); /* 改变div_ul2里面的值 */
function changeul2(u){
ctpage=1;//设置初始第一页
$("#div_ul1").children().css("background-color", "transparent").css("color","#e6f9ff");//设置所以选择项背景为透明
$(u).css("background-color","#66c8e8").css("color","white").css("font-weight","bold");//设置当前选择项背景颜色
$.ajax({
url:"getCatalog.action?CatalogId="+u.value,
async:false,
success:function(data){
s=data.split(",");//解析数据
allpage=parseInt((s.length-1)/size+1);//设置总页数
$("#div_ul2").empty();
for(var i=(ctpage-1)*size;i<ctpage*size;i++)
{
$("#div_ul2").append("<li onclick='changeMM(this)'>"+s[i]+"</li>");
}
$("#div_ul2").append("<div id='page_div'><a>上一页</a>   |   <a class='next' onclick='changepage("+(ctpage+1)+")'>下一页</a></div>"); }
}); }
//分页显示
function changepage(page){
var sn=page*size;//当前页显示数组中的哪些数据
if(page==allpage && (s.length-(page-1)*size)<size){//判断是不是最后一页
sn=s.length;
}
$("#div_ul2").empty();
for(var i=(page-1)*size;i<sn;i++)//动态加入上一页,下一页,首页上页不可点击。尾页一样
{
$("#div_ul2").append("<li onclick='changeMM(this)'>"+s[i]+"</li>");
}
if(page==1){
$("#div_ul2").append("<div id='page_div'><a>上一页</a>   |   <a class='next' onclick='changepage("+(page+1)+")'>下一页</a></div>");
}else if(page==allpage){
//alert(page==allpage);
$("#div_ul2").append("<div id='page_div'><a class='back' onclick='changepage("+(page-1)+")'>上一页</a>   |   <a>下一页</a></div>");
}else {
$("#div_ul2").append("<div id='page_div'><a class='back' onclick='changepage("+(page-1)+")'>上一页</a>   |   <a class='next' onclick='changepage("+(page+1)+")'>下一页</a></div>");
}
}
function changeMM(ipt){//设置输入框里面的值
$(ctclick).empty();//清空数据
$(ctclick).val(ipt.innerText);//重填数据
if(ctclick!=document.getElementById("mainMine")){
$("#on_select").css("visibility","hidden");
return ;
}

<script>



版权声明:本文为博主原创文章,未经博主允许不得转载。

jQuery实现,动态自动定位弹窗。JS分页,Ajax请求的更多相关文章

  1. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  2. Vue.js之Ajax请求

    Vue.js同React.Angular,可以说号称前端三巨头. 前段时间,有个哥们说,Vue.js现在出2.0版本了.可是我现在还是在用1.0的. Vue.js一直都没有好好系统的学习,包括目前公司 ...

  3. leyou_04_vue.js的ajax请求方式

    1.异步查询数据,自然是通过ajax查询,大家首先想起的肯定是jQuery.但jQuery与MVVM的思想不吻合,而且ajax只是jQuery的一小部分.因此不可能为了发起ajax请求而去引用这么大的 ...

  4. jquery getScript动态加载JS方法改进详解[转载]

    转载自http://www.jb51.net/article/31973.htm 有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法     $.getScript( ...

  5. jquery getScript动态加载JS方法改进详解

    有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...

  6. JQuery使用deferreds串行多个ajax请求

    使用JQuery对多个ajax请求串行执行. HTML代码: <a href="#">Click me!</a> <div></div&g ...

  7. 原生js发送ajax请求

    堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...

  8. js 中ajax请求时设置 http请求头中的x-requestd-with= ajax

    今天发现 AngularJS 框架的$http服务提供的$http.get() /$http.post()的ajax请求中没有带 x-requested-with字段. 这样的话,后端的php 就无法 ...

  9. JQuery 记第N次被坑 - ajax请求字符集问题

    前言:两个功能差不多的页面,都是使用$.post()请求后台,页面A传递到后台的中文参数正常,页面B传递到后台的中文参数则为乱码 分析过程: ①使用chrome的开发者工具,分析两个页面的ajax请求 ...

  10. 用JS实现Ajax请求

    AJAX核心(XMLHttpRequest) 其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象.所有的异步交互都是使用XMLHttpServlet对象完成的. ...

随机推荐

  1. ContestHunter暑假欢乐赛 SRM 02

    惨不忍睹 3个小时都干了些什么... 日常按顺序从A题开始(难度居然又不是递增的 第一眼A题就觉得很简单...写到一半才发现woc那是个环.感觉一下子复杂了,按照链的方法扩展的话要特判很多东西... ...

  2. Educational Codeforces Round 60 (Rated for Div. 2) 题解

    Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...

  3. A星寻路算法-Mind&Hand(C++)

    //注1:Mind & Hand,MIT校训,这里指的理解与实现(动脑也动手) //注2:博文分为两部分:(1)理解部分,为参考其他优秀博文的摘要梳理:(2)代码部分,是C++代码实现的,源码 ...

  4. POJ 3281 最大流

    Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17251   Accepted: 7643 Descripti ...

  5. [技巧篇]14.据说SSH框架需要的监听器,IntrospectorCleanupListener

    开发这么久,我也没有使用过IntrospectorCleanupListener监听器,今天偶尔看到一篇文章,虽然没有怎么读懂,也不太理解,但是好像给官方提供一些解释!给自己留一个备注,多点东西因为没 ...

  6. MongoDB入门(2)- MongoDB安装

    windows安装 下载文件,解压缩即可.下载地址 每次运行mongod --dbpath D:/MongoDB/data 命令行来启动MongoDB实在是不方便,把它作为Windows服务,这样就方 ...

  7. 元类编程--__getattr__, __getattribute__

    #__getattr__, __getattribute__ #__getattr__ 就是在查找不到属性的时候调用 from datetime import date class User: def ...

  8. Zyan 一个通信框架

    原文地址 本文示例 Zyan是一个简单直观的分布式应用程序开发框架. 以下是Zyan项目的简要概述. 架构图: Zyan一般由客户端和服务端组成.服务端(以组件的形式)提供服务,客户端远程调用服务端的 ...

  9. Oracle数据库,忽略大小写Like模糊查询(SQL Server,MySql原理相同)

    背景 在使用Oracle或者其它数据库时,使用like 关键字进行模糊查询是大家经常使用的功能,在纯中文环境中使用非常好用,还有一些通配符可以使用,但是在纯英文环境中,会出现大小需要精确匹配的问题,主 ...

  10. springcloud(一):大话Spring Cloud(山东数漫江湖)

    研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...