仿头条基于jQuery的省市插件应用

在公司的项目中,会遇到很多业务需要我们的开发插件。比如图片上传、地域选择等。现我将在我的项目中开发的基于jQuery的仿头条省市两级插件citySelect分享给大家。

github地址: https://github.com/cangjiamei/citySelect

插件演示

在项目中,城市的插件的功能有省市联动功能,还有比如区域划分一线城市、东北地区等快捷选择功能,如图所示:仿头条基于jQuery的省市插件应用

插件应用

citySelect是一个可配置化的插件,可以在生成HTML过程中的实现定制。可以通过配置来满足你的要求,定制要先定义一个options,然后传入$().citySelect()构造函数,通过定制options的内容来实现定制。

初始化未选中省市应用实例

github文件的template.html示例

basicData为基础数据源
advancedData为高级设置数据源

	$('.citybox').citySelect({
	     'data':basicData,//基础数据
	     'width':'540px',//插件宽度
	     'clearable':true,//是否加入清除功能
	     'fold':false,//是否收起列表
	     'advanced':{//高级设置
	         'data':advancedData
	     }
	 });
初始化选中省市应用实例

github文件的templateselect.html示例

basicData为基础数据源
advancedData为高级设置数据源
selectData为选中的数据

	$('.citybox').citySelect({
	     'data':basicData,//基础数据
	     'width':'540px',//插件宽度
	     'clearable':true,//是否加入清除功能
	     'fold':false,//是否收起列表
	     'advanced':{//高级设置
	         'data':advancedData
	     }
	     'selectValue':{
	     	'data':selectData
	     }
	 });
1 数据源

指定插件显示的数据。

在插件中,省市对应的基础数据源是必填的。根据业务,可以加入高级设置,并且加入高级设置的数据源。

1.1 基础数据源

对象数组作为数据源,数据的字段名称以及对象数组的格式必须与示例数据源一致。

ps:注意直辖市与其他省份数据的差异。

basicData=
	[
	    {"name":"北京","value":1},
	    {"name":"上海","value":2},
	    {"name":"天津","value":3},
	    {"name":"重庆","value":4},
	    {"name":"安徽","value":17,"city":[{"cityname":"合肥","cityvalue":157},{"cityname":"芜湖","cityvalue":158},{"cityname":"蚌埠","cityvalue":159},{"cityname":"马鞍山","cityvalue":160},{"cityname":"安庆","cityvalue":161},{"cityname":"滁州","cityvalue":162},{"cityname":"阜阳","cityvalue":163},{"cityname":"宿州","cityvalue":164},{"cityname":"六安","cityvalue":166},{"cityname":"淮南","cityvalue":344},{"cityname":"淮北","cityvalue":345},{"cityname":"铜陵","cityvalue":346},{"cityname":"黄山","cityvalue":347},{"cityname":"亳州","cityvalue":348},{"cityname":"池州","cityvalue":349},{"cityname":"宣城","cityvalue":350}]},
	    {"name":"澳门","value":33},
	    ......
	]

如图所示:
仿头条基于jQuery的省市插件应用

1.2 高级设置数据源

对象数组作为数据源,数据的字段名称以及对象数组的格式必须与示例数据源一致。用container字段来进行分组,用于页面的展示。注意:高级设置数据源的省市值与基础数据源的省市值保持一致。

数据源的一个container代表一个大分类,在插件显示的样式中表现为一个分割线内,container内的子数据源代表一个小分类即一项快捷选择。

ps:注意珠江三角洲与港澳台部分数据的差异。

advancedData=
	[	
		{
			'container':
				[
				{"text":"江浙沪","value":[{"name":"浙江","value":7},{"name":"江苏","value":10},{"name":"上海","value":2}]},
               	{"text":"珠三角","value":[{"name":"广东","value":5,"cityname":"广州","cityvalue":50},{"name":"广东","value":5,"cityname":"深圳","cityvalue":51},{"name":"广东","value":5,"cityname":"珠海","cityvalue":52},{"name":"广东","value":5,"cityname":"佛山","cityvalue":54},{"name":"广东","value":5,"cityname":"东莞","cityvalue":58},{"name":"广东","value":5,"cityname":"中山","cityvalue":59},{"name":"广东","value":5,"cityname":"惠州","cityvalue":57},{"name":"广东","value":5,"cityname":"江门","cityvalue":55},{"name":"广东","value":5,"cityname":"肇庆","cityvalue":299}]},
               	{"text":"京津冀","value":[{"name":"北京","value":1},{"name":"天津","value":3},{"name":"河北","value":12}]},
               	{"text":"港澳台","value":[{"name":"香港","value":32},{"name":"澳门","value":33},{"name":"台湾","value":999}]},
               	{"text":"东部沿海","value":[{"name":"北京","value":1},{"name":"天津","value":3},{"name":"河北","value":12},{"name":"辽宁","value":9},{"name":"上海","value":2},{"name":"江苏","value":10},{"name":"浙江","value":7},{"name":"福建","value":11},{"name":"山东","value":16},{"name":"广东","value":5},{"name":"广西","value":18},{"name":"海南","value":19},{"name":"重庆","value":4}]},
			]
		},
		{
			'container':[
				{"text":"华东地区","value":[{"name":"上海","value":2},{"name":"江苏","value":10},{"name":"浙江","value":7},{"name":"安徽","value":17},{"name":"福建","value":11},{"name":"江西","value":28},{"name":"山东","value":16}]},
                {"text":"华南地区","value":[{"name":"广东","value":5},{"name":"广西","value":18},{"name":"海南","value":19},{"name":"香港","value":32},{"name":"澳门","value":33}]},
                {"text":"华中地区","value":[{"name":"河南","value":13},{"name":"湖北","value":26},{"name":"湖南","value":27}]},
                {"text":"华北地区","value":[{"name":"北京","value":1},{"name":"天津","value":3},{"name":"河北","value":12},{"name":"山西","value":21},{"name":"内蒙古","value":20}]},
                {"text":"西南地区","value":[{"name":"四川","value":6},{"name":"云南","value":29},{"name":"贵州","value":8},{"name":"重庆","value":4},{"name":"西藏","value":31}]},
                {"text":"西北地区","value":[{"name":"陕西","value":24},{"name":"甘肃","value":23},{"name":"青海","value":25},{"name":"宁夏","value":22},{"name":"新疆","value":30}]},
                {"text":"东北地区","value":[{"name":"辽宁","value":9},{"name":"吉林","value":14},{"name":"黑龙江","value":15}]},
					]
				},
		},
		......
	]

如图所示:
仿头条基于jQuery的省市插件应用

1.3 选中省市的数据源

对象作为数据源。选中为selectValue配置项。
注意:选中省市的数据源省市对应值与基础数据源的省市值保持一致。

ps:选中值为{选中的省value:选中的市value}
直辖市的话{选中的省value:选中的省value}

selectValue={
             	'data':{
					1: "1", 
					3: "3", 
					11: "109,110,111,112,113,114,115,116,117", 
					12: "35,40"
				},
        	}

如图所示:
仿头条基于jQuery的省市插件应用

2 配置选项列表

在实例化的时候通过参数设置

名称 默认值 描述
data 必须。 citySelect根据基础数据源才可以生成HTML
width 540px 非必须。 最低宽度为540px
clearable true 非必须。 清除选中的省市
fold false 非必须。
advanced 非必须。 citySelect根据advanced设置的配置,加入高级设置的advanced.data数据源才可以生成高级设置部分的HTML
selectValue 非必须。 citySelect根据selectValue的配置,加入选中的selectValue.data数据源才可以初始化选中省和市
3 获取选中的值
3.1 获取选中的省市

获取的省市格式为json格式:{省valuse:市value,省valuse:市value}

注意: 当为直辖市时,省市的值保持一致

	$('.cityBox').citySelect().getValue();
	//选中北京、天津、全福建省,河北省石家庄市保定市则值为
	{
		1: "1", 
		3: "3", 
		11: "109,110,111,112,113,114,115,116,117", 
		12: "35,40"
	}
3.2 获取选中全部市的省

获取的省市格式为字符串格式:省,省,省

注意: 当选中为直辖市时,也视为选中全省

	$('.cityBox').citySelect().getProvince();
	//选中北京、天津、全福建省,河北省石家庄市保定市则值为
	1,3,11
3.3 获取选中的市

获取的省市格式为字符串格式:市,市,市

注意: 当选中为直辖市时,也视为选中市

	$('.cityBox').citySelect().getCity();
	//选中北京、天津、全福建省,河北省石家庄市保定市则值为
	1,3,109,110,111,112,113,114,115,116,117,35,40