一个jquery 的 地址联动插件

有了上一个博客的基础,我们现在来做一个地址插件:

首先还是Area.xml文件,这里就不展示了:

HTML文件:  

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        #province{
            margin: 4px;
        }
        #city{
            margin: 4px;
        }
        #country{
            margin: 4px;
        }
    </style>

    <script type="text/javascript" src="jquery-1.8.3.js"></script>
    <script type="text/javascript" src="jquery.address.js"></script>
    <script type="text/javascript">
        $(function(){
            $("#address").getAddress();
        })
    </script>

  </head>
  <body>
    <div id="address"></div>
  </body>
</html>

JS插件:

(function($){

    $.fn.getAddress = function(options){
        var settings = $.extend({
            url:"Area.xml",
            province:"province",
            city:"city",
            country:"country",
            attrName:"name",
            attrValue:"value"
        },options||{});

        var data;
        $.get(settings.url,function(value){
            data = value;
            //获得省份数据
            getNode(settings.province,ps);

        });

        var ps = $("<select id=‘province‘><option>请选择省份</option><select>");
        var cis = $("<select id=‘city‘><option>请选择城市</option><select>");
        var cns = $("<select id=‘country‘><option>请选择地区</option><select>");
        this.append(ps);
        this.append(cis);
        this.append(cns);

        //当点击省份时,获得下面的city
        ps.on("change",function(){
            cis.find("option:gt(0)").remove();//先清空后面的select
            cns.find("option:gt(0)").remove();
            getNode(settings.province+"[value="+$(this).attr(settings.attrValue)+"] "+settings.city,cis);
        });

        //当点击城市时,获得下面的地区
        cis.on("change",function(){
            cns.find("option:gt(0)").remove();
            getNode(settings.city+"[value="+$(this).attr(settings.attrValue)+"] "+settings.country,cns);
        });

        function getNode(node,id){
            $(data).find(node).each(function(){
                id.append(creteOption($(this)));
            });
        }

        function creteOption(obj){
            return "<option value="+obj.attr(settings.attrValue)+">"+obj.attr(settings.attrName)+"</option>";
        }
    }
})(jQuery)
时间: 2024-10-20 02:43:45

一个jquery 的 地址联动插件的相关文章

分享一个JQuery弹出层插件

JQuery插件TipsWindown 1.1 一个基于jQuery的弹出层.支持拖拽,支持内容为文字,图片,URL等!至于兼容性.在IE6下,弹出对像无法绝对固定.其他应该没啥大问题: 最新更新:(2010-08-12):修正IE6下不能遮住下拉菜单的BUG,增加拖动时半透明效果.句容市鄂茂钢铁 应用演示 弹出文本信息提示:   我是下拉菜单 tipsWindown("提示","text:提示信息内容","250","150"

jquery 的地址联动

这是一个简单HTML + jquery: 后面会做一个插件, 这是Area.xml文件: <?xml version="1.0" encoding="UTF-8"?> <address> <province name="北京市" value="110000" zs_value="110000"> <city name="市辖区" value=&q

【jQuery】结合accordion插件分析写插件的方法及注意事项

1.jQuery插件的命名方式:jquery.[插件名].js 2.对象方法附加在jQuery.fn上,全局函数附加在jQuery对象本身上 3.插件内部this指向的是通过选择器获取的jQuery对象 4.结尾加分号,插件头部最好也加分号 5.插件应该返回一个jQuery对象,保证插件的链式操作 6.插件内部应用完整的jQuery而不是$,但可以利用闭包,将jQuery传入,使插件内部可以继续使用$符合作为jQuery别名 7.闭包另一大好处:可以避免内部变量影响全局空间 :(function

分享一个jquery功能强大的提示信息插件代码

代码属于提示文字特效,很好,使用有些复杂,请参demo使用 下载地址:jquery功能强大的提示信息插件代码 预览DEMO:DEMO 分享一个jquery功能强大的提示信息插件代码,布布扣,bubuko.com

[ PHP+jQuery ] ajax 多级联动菜单的应用:电商网站的用户地址选择功能 ( 一 ) - 传统下拉菜单

/** jQuery version: 1.8.3 Author: 小dee Date: 2014.11.5 */ 说明:分析其他网站的图片较多,可以在目录跳过直接看本文 demo . 目录: 其他网站分析 亚马逊 淘宝 京东 当当 本文案例 demo1 demo2 [ 后面的博文再写 ] demo3 [ 后面的博文再写 ] 惯例,先看看他山之石,选择了四家比较大的电商网站:亚马逊.淘宝.京东.当当,看看它们的地址联动菜单是怎么做的. 1. 亚马逊[返回目录][下一节:淘宝] 图1 默认界面 说

做了一个jquery插件,使表格的标题列可左右拉伸

示例下载 插件名称命名为:jquery.tableresize.js,代码如下: /* Writen by mlcactus, 2014-11-24 这是我封装的一个jquery插件,能够使table的各列可以左右拉伸,从而使宽度变小或变大 用法: 单个table:$("#table_id").tableresize(); 页面所有table:$("table").tableresize(); */ (function ($) { $.fn.tableresize

一个简单的页面弹窗插件 jquery.pageMsgFrame.js

页面弹窗是网站中常用的交互效果,它可以强提示网站的某些信息给用户,或者作用于某些信息的修改等等功能. 这几天在做一个项目的时候,就顺捎把这个插件写一下,栽棵树,自己乘凉吧. 原创博文,转载请注明出处:http://www.cnblogs.com/dereksunok/p/3724764.html html代码: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5

如何去定义一个jquery插件

扩展jquery的时候.最核心的方法是以下两种: $.extend(object) 可以理解为jquery添加一个静态方法 $.fn.extend(object) 可以理解为jquery实例添加一个方法 $.extend(object) 例子: 1 2 3 4 5 6 7 /* $.extend 定义与调用 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ $.extend({ f

分享一个jquery插件,弥补一下hover事件的小小不足

hover事件有一个缺点:当你的鼠标无意划过一个dom元素(瞬间划过,这个时候用户可能不想触发hover事件),会触发hover事件 应该设置一个时差来控制hover事件的触发 比如jd左边的菜单 你用鼠标瞬间划过他子菜单会弹出然后立即消失, 用户体验非常的不好. 易迅的菜单就没有这个问题 delayHover来解决这个问题 啥也不说了先看调用---------- 调用方式: var duration = 500;// 延迟500毫秒 $('#div1').delayHover(function