基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)_jquery

1. 数据
一共包含了全国3049所大学, 从人人网拷贝的 (仅供学习交流, 请勿用于商业项目), 这是一个脚本文件, 里含的JSON对象存储了学校的信息, 格式为:

复制代码 代码如下:

var schoolList=[
{
"id":1, //省份id
"school": [
{
"id": 1001, //学校id
"name": "\u6e05\u534e\u5927\u5b66" //学校名称
}
/....
], //这个省的学校
"name": "\u5317\u4eac"
},
//...
];

2. 步骤
2.1 弹框的构造及弹出方式
目前弹框分为iframe和div两种形式, 在本例中我选择使用div作为弹框, 弹框的结构如下:

复制代码 代码如下:

<div id="choose-box-wrapper">
<div id="choose-box">
<div id="choose-box-title">
<span>选择学校</span>
</div>
<div id="choose-a-province">
</div>
<div id="choose-a-school">
</div>
<div id="choose-box-bottom">
<input type="botton" onclick="hide()" value="关闭" />
</div>
</div>
</div>

弹框初始状态下为隐藏状态(display:none), 为了用户体验, 在用户触发打开弹框时间后, 弹框应该在页面中呈居中显示, 使用下面一段代码可以实现居中效果:

复制代码 代码如下:

function makeCenter()
{
$('#choose-box-wrapper').css("display","block");
$('#choose-box-wrapper').css("position","absolute");
$('#choose-box-wrapper').css("top", Math.max(0, (($(window).height() - $('#choose-box-wrapper').outerHeight()) / 2) + $(window).scrollTop()) + "px");
$('#choose-box-wrapper').css("left", Math.max(0, (($(window).width() - $('#choose-box-wrapper').outerWidth()) / 2) + $(window).scrollLeft()) + "px");
}

2.2 加载省份列表和学校列表
在第一次跳出弹框时, 默认为列表中的第一个省份. 加载完这个省份所有的名单后, 给每一项都需要绑定一个click函数, 用户在发生单击后, 更新用户选择省份下的大学列表.
更新完该省的大学列表后, 同样要给每一项都绑定一个click函数, 用户在选择该大学后可以执行相应的操作. (比如给某个文本框填值, 页面重定向etc.)

复制代码 代码如下:

function initProvince()
{
//原先的省份列表清空
$('#choose-a-province').html('');
for(i=0;i<schoolList.length;i++)
{
$('#choose-a-province').append('<a class="province-item" province-id="'+schoolList[i].id+'">'+schoolList[i].name+'</a>');
}
//添加省份列表项的click事件
$('.province-item').bind('click', function(){
var item=$(this);
var province = item.attr('province-id');
var choosenItem = item.parent().find('.choosen');
if(choosenItem)
$(choosenItem).removeClass('choosen');
item.addClass('choosen');
//更新大学列表
initSchool(province);
}
);
}
function initSchool(provinceID)
{
//原先的学校列表清空
$('#choose-a-school').html('');
var schools = schoolList[provinceID-1].school;
for(i=0;i<schools.length;i++)
{
$('#choose-a-school').append('<a class="school-item" school-id="'+schools[i].id+'">'+schools[i].name+'</a>');
}
//添加大学列表项的click事件
$('.school-item').bind('click', function(){
var item=$(this);
var school = item.attr('school-id');
//更新选择大学文本框中的值
$('#school-name').val(item.text());
//关闭弹窗
hide();
}
);
}

2.3 弹出及隐藏窗口
在本例中, 用户点击一个要求输入学校的文本框, 页面跳出弹框. 弹框中含有关闭按钮, 可以关闭弹框.

复制代码 代码如下:

//弹出窗口
function pop(){
//将窗口居中
makeCenter();
//初始化省份列表
initProvince();
//默认情况下, 给第一个省份添加choosen样式
$('[province-id="1"]').addClass('choosen');
//初始化大学列表
initSchool(1);
}
//隐藏窗口
function hide()
{
$('#choose-box-wrapper').css("display","none");
}

3. DEMO及下载
http://demo.jb51.net/js/2012/jquery_school/
下载:jquery_school.rar

时间: 2024-09-20 00:06:39

基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)_jquery的相关文章

js点击弹出层之后选择中国大学的弹框

效果如下图 代码 1. 数据 一共包含了全国3049所大学. 数据文件:http://file.111cn.net/upload/2014/4/school.js 这是一个脚本文件, 里含的JSON对象存储了学校的信息, 格式为:  代码如下 复制代码 var schoolList=[     {         "id":1, //省份id         "school": [             {                 "id&quo

jQuery实现点击查看大图并以弹框的形式居中_jquery

jQuery实现点击查看大图并以弹框的形式居中,实现的关键代码如下所示: *{margin:0;padding:0;} .tab_bg{display:none;width:100%;height:100%;background:#282829;z-index:99;position:absolute;} .tab_img{width:100px;height:100px;margin:20px;} .tab_img img{width:100%;height:100%;} .bigImg{di

用jquery中插件dialog实现弹框效果实例代码_jquery

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

基于jQuery的的一个隔行变色,鼠标移动变色的小插件_jquery

table HTMLElement效果 复制代码 代码如下: var br_cc = (function(){ var setEffect = function(els,params){ var settings = {"c1":"#eee","c2":"#ccc","c3":"#f00"}; $.extend(settings,params); els.each(function(i)

基于jquery的使ListNav兼容中文首字拼音排序的实现代码_jquery

效果图如下所示: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>中

基于Jquery的将DropDownlist的选中值赋给label的实现代码_jquery

jquery代码 复制代码 代码如下: $(function() { $("#DropDownList1").bind("change", function() { $("#Label1").text($("#DropDownList1 option:selected").text()); }); 或者 复制代码 代码如下: $("#DropDownList1").bind("change&quo

基于jquery的禁用右键、文本选择功能、复制按键的实现代码_jquery

同时适合IE.firefox.谷歌浏览器下适用,经过筛选代码如下: 复制代码 代码如下: //禁用右键.文本选择功能.复制按键$(document).bind("contextmenu",function(){return false;});$(document).bind("selectstart",function(){return false;});$(document).keydown(function(){return key(arguments[0])}

html5-用纯javascript或者纯jQuery 调用中国气象网的json数据的代码

问题描述 用纯javascript或者纯jQuery 调用中国气象网的json数据的代码 用javascript或者jQuery 调用中国气象网 http://m.weather.com.cn/data/101050101.html 只能用javascript,jQuery,html5,css 效果是完整显示在页面上城市,一周天气 解决方案 最简单的,设置一个div,用#ajax.get下载网页,用("#yourdiv").html直接装入. 解决方案二: 直接jquery,GET请求

jquery做的一个简单的屏幕锁定提示框

 这篇文章主要介绍了使用jquery做的一个简单的屏幕锁定提示框,需要的朋友可以参考下 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"&