jQuery实现,动态自动定位弹窗。JS分页,Ajax请求
工作中碰到一个问题,一个页面中碰到多个地方需要弹窗数据。
网上找了一圈,没有找到合适的,所以自己写了一个。
兼容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请求的更多相关文章
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
博客分类: jquery-easyui jQueryAjax框架HTML 现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...
- Vue.js之Ajax请求
Vue.js同React.Angular,可以说号称前端三巨头. 前段时间,有个哥们说,Vue.js现在出2.0版本了.可是我现在还是在用1.0的. Vue.js一直都没有好好系统的学习,包括目前公司 ...
- leyou_04_vue.js的ajax请求方式
1.异步查询数据,自然是通过ajax查询,大家首先想起的肯定是jQuery.但jQuery与MVVM的思想不吻合,而且ajax只是jQuery的一小部分.因此不可能为了发起ajax请求而去引用这么大的 ...
- jquery getScript动态加载JS方法改进详解[转载]
转载自http://www.jb51.net/article/31973.htm 有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript( ...
- jquery getScript动态加载JS方法改进详解
有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...
- JQuery使用deferreds串行多个ajax请求
使用JQuery对多个ajax请求串行执行. HTML代码: <a href="#">Click me!</a> <div></div&g ...
- 原生js发送ajax请求
堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...
- js 中ajax请求时设置 http请求头中的x-requestd-with= ajax
今天发现 AngularJS 框架的$http服务提供的$http.get() /$http.post()的ajax请求中没有带 x-requested-with字段. 这样的话,后端的php 就无法 ...
- JQuery 记第N次被坑 - ajax请求字符集问题
前言:两个功能差不多的页面,都是使用$.post()请求后台,页面A传递到后台的中文参数正常,页面B传递到后台的中文参数则为乱码 分析过程: ①使用chrome的开发者工具,分析两个页面的ajax请求 ...
- 用JS实现Ajax请求
AJAX核心(XMLHttpRequest) 其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象.所有的异步交互都是使用XMLHttpServlet对象完成的. ...
随机推荐
- BZOJ3998:[TJOI2015]弦论——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3998 https://www.luogu.org/problemnew/show/P3975 对于 ...
- 51nod 1273 旅行计划(思维题)
一开始看到这题真的有点懵逼...一直在想着套算法,结果题解除了sort和dfs其他什么都没用到 显然每次到达的一定都是叶子,先从根节点dfs一遍,按深度对叶子降序排序,按这个顺序向根节点dfs,路径上 ...
- TCP的连接(三次握手)和释放(四次挥手)
1 http都设置哪些header? http协议规定:一个完整的客户端发送给服务端的HTTP请求包括: (1)请求行:包括了请求方法.请求资源路径.HTTP协议版本,eg:GET/Server/im ...
- 目标世界上最小的Linux系统—ttylinux体验
ttylinux的官方网址:http://ttylinux.net/ 简单翻译一下: 你当前访问的是ttylinux的主页,一个针对多种CPU架构的极小的GNU/Linux系统.最小的ttylinux ...
- 跨平台sdk接入总结
sdk说明: 1.Bugly SDK:自动捕获上报App的脚本错误和原生代码引发的崩溃信息,并提供异常问题分类分析. 2.语音 SDK:提供游戏内收发语音功能. 接入步骤: step1:仔细通读一遍s ...
- java中new一个对象放在循环体里面与外面的区别
首先说下问题: 这次在做项目的是出现了一个new对象在循环里面与外面造成的不同影响. 大家可以看到这个new的对象放在不同的位置产生的效果是不一样的. 经过多方查询与验证可以得出结论: * EasyU ...
- 深入探析 Rational AppScan Standard Edition 多步骤操作
序言 IBM Rational AppScan Standard(下文简称 AppScan)作为面向 Web 应用安全黑盒检测的自动化工具,得到业界的广泛认可和应用.很多人使用 AppScan 时都采 ...
- [技巧篇]02.关于MyBatis存取图片到MySQL数据Blob字段
- 一个JAVA题引发的思考
转载自:http://www.cnblogs.com/heshan664754022/archive/2013/03/24/2979495.html 十年半山 今天在论坛闲逛的时候发现了一个很有趣的题 ...
- MyBatis框架的使用及源码分析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder
在 <MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置与使用> 的demo中看到了SessionFactory的创建过程: SqlSessionFactory sess ...