使用jQuery+HttpHandler+xml模擬一個三級聯(lián)動的例子
更新時間:2011年08月09日 12:16:16 作者:
昨天同學(xué)問我有關(guān)如何快速讀取多層級xml文件的問題,于是我就使用省、市、縣模擬了一個三級聯(lián)動的例子,客戶端使用jQuery實(shí)現(xiàn)異步加載服務(wù)器返回的json數(shù)據(jù),服務(wù)器端則使用XPath表達(dá)式查詢數(shù)據(jù)。
如下是實(shí)現(xiàn)過程:
第一步:準(zhǔn)備xml文件,并放置在網(wǎng)站根目錄下,名為Area.xml
<?xml version="1.0" encoding="utf-8" ?>
<area>
<province id="1" name="北京">
<city id="1" name="北京">
<county id="1" name="東城區(qū)" />
<county id="2" name="西城區(qū)" />
</city>
</province>
<province id="2" name="河北省">
<city id="1" name="石家莊市">
<county id="1" name="正定縣" />
<county id="2" name="靈壽縣" />
</city>
<city id="2" name="邯鄲市">
<county id="1" name="邯鄲縣" />
<county id="2" name="永年縣" />
</city>
</province>
<province id="3" name="海南省">
<city id="1" name="??谑?>
<county id="1" name="龍華區(qū)" />
<county id="2" name="秀英區(qū)" />
<county id="3" name="美蘭區(qū)" />
</city>
<city id="2" name="三亞市">
<county id="1" name="天涯鎮(zhèn)" />
<county id="2" name="鳳凰鎮(zhèn)" />
</city>
</province>
</area>
第二步:創(chuàng)建與xml文件中定義的元素對應(yīng)的實(shí)體類。
<province/>對應(yīng)province類
public class Province
{
private string id;
/// <summary>
/// 編號
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 名稱
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
}
<city/>對應(yīng)City類:
public class City
{
private string id;
/// <summary>
/// 編號
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 名稱
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
}
<county/>對應(yīng)county類:
public class County
{
private string id;
/// <summary>
/// 編號
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 名稱
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
}
第三步:編寫服務(wù)器端處理程序類:Handler.cs
/// <summary>
2 /// 處理程序
3 /// </summary>
4 public class Handler : IHttpHandler
5 {
6
7 private static XDocument doc;
8 private string filePath = HttpContext.Current.Server.MapPath("~/Area.xml");
9 //javascript序列化類
private static JavaScriptSerializer jss = new JavaScriptSerializer();
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string result = "failure";//默認(rèn)返回結(jié)果為失敗
HttpRequest req = context.Request;
string province = req["province"];//獲取用戶選擇的省的編號
string city = req["city"];//獲取用戶選擇的市的編號
string county = req["county"];//獲取用戶選擇的縣的編號
string type = req["type"];//獲取用戶需要獲取的省市縣列表的類型
InitDoc();
if (type.HasValue())
{
switch (type.ToLower())
{
case "province"://如果用戶需要獲取省級列表
result = jss.Serialize(GetProvinceList());
break;
case "city"://如果用戶需要獲取的是市級列表
result = jss.Serialize(GetCityListByProvince(province));
break;
case "county"://如果用戶需要獲取的是縣級列表
result = jss.Serialize(GetCountyListByCity(province, city));
break;
default:
break;
}
}
//將結(jié)果以文本的格式返回給客戶端
context.Response.Write(result);
}
/// <summary>
/// 初始化文檔對象
/// </summary>
private void InitDoc()
{
if (doc == null)
{
doc = XDocument.Load(filePath);
}
}
/// <summary>
/// 初始化省級列表
/// </summary>
private List<Province> GetProvinceList()
{
List<Province> list = new List<Province>();
if (doc != null)
{
XElement root = doc.Root;
foreach (var prov in root.XPathSelectElements("province"))
{
list.Add(new Province()
{
Id = prov.Attribute("id").Value,
Name = prov.Attribute("name").Value
});
}
}
return list;
}
/// <summary>
/// 根據(jù)省級編號獲取市級編號
/// </summary>
/// <param name="provId">省級編號</param>
private List<City> GetCityListByProvince(string provId)
{
List<City> list = new List<City>();
if (doc != null)
{
XElement root = doc.Root;
//xpath表達(dá)式:/area/province[@id='1']/city
string queryPath = "/area/province[@id='" + provId + "']/city";
foreach (var city in root.XPathSelectElements(queryPath))
{
list.Add(new City()
{
Id = city.Attribute("id").Value,
Name = city.Attribute("name").Value
});
}
}
return list;
}
/// <summary>
/// 根據(jù)省級編號和市級編號獲取縣級編號
/// </summary>
/// <param name="provId">省級編號</param>
/// <param name="cityId">市級編號</param>
private List<County> GetCountyListByCity(string provId, string cityId)
{
List<County> list = new List<County>();
if (doc != null)
{
XElement root = doc.Root;
string queryPath = "/area/province[@id='" + provId + "']/city[@id='" + cityId + "']/county";
foreach (var county in root.XPathSelectElements(queryPath))
{
list.Add(new County()
{
Id = county.Attribute("id").Value,
Name = county.Attribute("name").Value
});
}
}
return list;
}
public bool IsReusable
{
get
{
return false;
}
}
}
在這里,查詢xml我采用的是System.Xml.XPath命名空間下的XPathSelectElements(string xpath)方法和XPathSelectElement(string xpath)方法,在根據(jù)省級編號獲取市級編號的方法里面,我使用了xpath表達(dá)式(假設(shè)傳入的省級編號為1):/area/province[@id='1']/city,這個表達(dá)式以“/”開頭,表示使用絕對路徑,因?yàn)閍rea為根節(jié)點(diǎn)所以從area開始,接著它下面有province元素,當(dāng)我想獲取area下所有province元素中id屬性值為1的province元素時,我可以使用/area/province[@id='1'],即在province后面加上[@id='1']這個條件,這時我就獲取到了area下id屬性為1的province元素了。接著我要獲取該province元素下所有的city,那么只需在后面加上/city即可,所以最終的xpath表達(dá)式為:/area/province[@id='1']/city。
還有,因?yàn)榇瞬樵兊膞ml是在當(dāng)前網(wǎng)站的根目錄,如果是在其它地方,那么在查詢的時候要加上namespace
將從xml文件中讀取到的值組裝成對應(yīng)的實(shí)體對象只后,我使用了System.Web.Script.Serialization命名空間下的JavaScriptSerializer類中的Serialize方法將得到的實(shí)體對象序列化成json數(shù)據(jù)返回給客戶端。
第四步:編寫html和js。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>省市縣三級聯(lián)動下拉列表</title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$.post("/Handler.ashx", { "type": "province" }, function (data, status) {
if (status == "success") {
if (data != "failure") {
data = $.parseJSON(data); //解析服務(wù)器返回的json數(shù)據(jù)
for (var i = 0; i < data.length; i++) {
var value = data[i].Id + ":" + data[i].Name; //設(shè)置option選項(xiàng)的值,格式為:"編號:名稱"
$("#province").append("<option value='" + value + "'>" + data[i].Name + "</option>");
}
}
}
}, "text");
$("#province").change(function () {
var selectValue = $(this).val(); //獲取選擇的省級option的值
var provId = selectValue.split(':')[0]; //取出編號
var provTxt = selectValue.split(':')[1]; //取出名稱
$("#txtProvince").html(provTxt); //顯示選擇的省的名稱
$("#city").html("<option>==請選擇市==</option>"); //當(dāng)省級改變時將市級清空
$("#county").html("<option>==請選擇縣==</option>"); //當(dāng)省級改變時將縣級清空
$.post("/Handler.ashx", { "province": provId, "type": "city" }, function (data, status) {
if (status == "success") {
if (data != "failure") {
data = $.parseJSON(data);
for (var i = 0; i < data.length; i++) {
var value = data[i].Id + ":" + data[i].Name;
$("#city").append("<option value='" + value + "'>" + data[i].Name + "</option>");
}
}
}
}, "text");
});
$("#city").change(function () {
var provId = $("#province").val().split(':')[0];
var selectValue = $(this).val(); //同上
var cityId = selectValue.split(':')[0]; //同上
var cityTxt = selectValue.split(':')[1]; //同上
$("#txtCity").html(cityTxt); //顯示選擇的市的名稱
$("#county").html("<option>==請選擇縣==</option>"); //同上
$.post("/Handler.ashx", { "province": provId, "city": cityId, "type": "county" }, function (data, status) {
if (status == "success") {
if (data != "failure") {
data = $.parseJSON(data);
for (var i = 0; i < data.length; i++) {
var value = data[i].Id + ":" + data[i].Name;
$("#county").append("<option value='" + value + "'>" + data[i].Name + "</option>");
}
}
}
}, "text");
});
$("#county").change(function () {
$("#txtCounty").html($(this).val().split(':')[1]); //顯示選擇的縣的名稱
});
});
</script>
</head>
<body>
<!--省-->
<select id="province" name="province">
</select>
<!--市-->
<select id="city" name="city">
</select>
<!--縣-->
<select id="county" name="county">
</select>
<br />
<span id="txtProvince" style="color: #ff0000;"></span>- <span id="txtCity" style="color: #ff0000;"></span>- <span id="txtCounty" style="color: #ff0000;"></span>
</body>
</html>
關(guān)于使用jQuery與服務(wù)器通信,我使用的是$.post方法,該方法的具體使用可以參考jQuery官方文檔,這里我想說的是,遍歷后通過對象.屬性訪問時,這個屬性的名字是區(qū)分大小寫的,這個名字是服務(wù)器端定義的名字,因?yàn)榉?wù)器序列化的是服務(wù)器端的實(shí)體對象。
在這個例子中,關(guān)鍵點(diǎn)就是如何使用XPath表達(dá)式,如何調(diào)用System.Xml.XPath命名空間下的XPathSelectElements(string xpath)方法。
最終結(jié)果如下圖:

代碼13,31,50行可以優(yōu)化。
不建議多次修改DOM結(jié)構(gòu),可以拼接字符串后一次append
數(shù)據(jù)源是xml,我會用xslt來解析xml直接輸出<option>,這樣就不用再前臺拼接字符串了。要求所有節(jié)點(diǎn)ID不能有相同。
<select id="province" name="province" next="#city">
</select>
<select id="city" name="city" next="#county">
<option>==請選擇市==</option>
</select>
</form>
<select id="county" name="county">
<option>==請選擇縣==</option>
</select>
<script type="text/javascript">
$("#province,#city").change(function () {
var nextSelect = $(this.getAttribute("next"));
//if (nextSelect.size() > 0) {
nextSelect.find("option:gt(0)").remove();
var _id = $(this).find("option:selected").val();
var query = { parentId: _id };
$.get("/Handler.ashx", query, function (data, status) {
//...
nextSelect.append("<option>...</option>....");
});
//}
});
</script>
第一步:準(zhǔn)備xml文件,并放置在網(wǎng)站根目錄下,名為Area.xml
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<area>
<province id="1" name="北京">
<city id="1" name="北京">
<county id="1" name="東城區(qū)" />
<county id="2" name="西城區(qū)" />
</city>
</province>
<province id="2" name="河北省">
<city id="1" name="石家莊市">
<county id="1" name="正定縣" />
<county id="2" name="靈壽縣" />
</city>
<city id="2" name="邯鄲市">
<county id="1" name="邯鄲縣" />
<county id="2" name="永年縣" />
</city>
</province>
<province id="3" name="海南省">
<city id="1" name="??谑?>
<county id="1" name="龍華區(qū)" />
<county id="2" name="秀英區(qū)" />
<county id="3" name="美蘭區(qū)" />
</city>
<city id="2" name="三亞市">
<county id="1" name="天涯鎮(zhèn)" />
<county id="2" name="鳳凰鎮(zhèn)" />
</city>
</province>
</area>
第二步:創(chuàng)建與xml文件中定義的元素對應(yīng)的實(shí)體類。
<province/>對應(yīng)province類
復(fù)制代碼 代碼如下:
public class Province
{
private string id;
/// <summary>
/// 編號
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 名稱
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
}
<city/>對應(yīng)City類:
復(fù)制代碼 代碼如下:
public class City
{
private string id;
/// <summary>
/// 編號
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 名稱
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
}
<county/>對應(yīng)county類:
復(fù)制代碼 代碼如下:
public class County
{
private string id;
/// <summary>
/// 編號
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 名稱
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
}
第三步:編寫服務(wù)器端處理程序類:Handler.cs
復(fù)制代碼 代碼如下:
/// <summary>
2 /// 處理程序
3 /// </summary>
4 public class Handler : IHttpHandler
5 {
6
7 private static XDocument doc;
8 private string filePath = HttpContext.Current.Server.MapPath("~/Area.xml");
9 //javascript序列化類
private static JavaScriptSerializer jss = new JavaScriptSerializer();
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string result = "failure";//默認(rèn)返回結(jié)果為失敗
HttpRequest req = context.Request;
string province = req["province"];//獲取用戶選擇的省的編號
string city = req["city"];//獲取用戶選擇的市的編號
string county = req["county"];//獲取用戶選擇的縣的編號
string type = req["type"];//獲取用戶需要獲取的省市縣列表的類型
InitDoc();
if (type.HasValue())
{
switch (type.ToLower())
{
case "province"://如果用戶需要獲取省級列表
result = jss.Serialize(GetProvinceList());
break;
case "city"://如果用戶需要獲取的是市級列表
result = jss.Serialize(GetCityListByProvince(province));
break;
case "county"://如果用戶需要獲取的是縣級列表
result = jss.Serialize(GetCountyListByCity(province, city));
break;
default:
break;
}
}
//將結(jié)果以文本的格式返回給客戶端
context.Response.Write(result);
}
/// <summary>
/// 初始化文檔對象
/// </summary>
private void InitDoc()
{
if (doc == null)
{
doc = XDocument.Load(filePath);
}
}
/// <summary>
/// 初始化省級列表
/// </summary>
private List<Province> GetProvinceList()
{
List<Province> list = new List<Province>();
if (doc != null)
{
XElement root = doc.Root;
foreach (var prov in root.XPathSelectElements("province"))
{
list.Add(new Province()
{
Id = prov.Attribute("id").Value,
Name = prov.Attribute("name").Value
});
}
}
return list;
}
/// <summary>
/// 根據(jù)省級編號獲取市級編號
/// </summary>
/// <param name="provId">省級編號</param>
private List<City> GetCityListByProvince(string provId)
{
List<City> list = new List<City>();
if (doc != null)
{
XElement root = doc.Root;
//xpath表達(dá)式:/area/province[@id='1']/city
string queryPath = "/area/province[@id='" + provId + "']/city";
foreach (var city in root.XPathSelectElements(queryPath))
{
list.Add(new City()
{
Id = city.Attribute("id").Value,
Name = city.Attribute("name").Value
});
}
}
return list;
}
/// <summary>
/// 根據(jù)省級編號和市級編號獲取縣級編號
/// </summary>
/// <param name="provId">省級編號</param>
/// <param name="cityId">市級編號</param>
private List<County> GetCountyListByCity(string provId, string cityId)
{
List<County> list = new List<County>();
if (doc != null)
{
XElement root = doc.Root;
string queryPath = "/area/province[@id='" + provId + "']/city[@id='" + cityId + "']/county";
foreach (var county in root.XPathSelectElements(queryPath))
{
list.Add(new County()
{
Id = county.Attribute("id").Value,
Name = county.Attribute("name").Value
});
}
}
return list;
}
public bool IsReusable
{
get
{
return false;
}
}
}
在這里,查詢xml我采用的是System.Xml.XPath命名空間下的XPathSelectElements(string xpath)方法和XPathSelectElement(string xpath)方法,在根據(jù)省級編號獲取市級編號的方法里面,我使用了xpath表達(dá)式(假設(shè)傳入的省級編號為1):/area/province[@id='1']/city,這個表達(dá)式以“/”開頭,表示使用絕對路徑,因?yàn)閍rea為根節(jié)點(diǎn)所以從area開始,接著它下面有province元素,當(dāng)我想獲取area下所有province元素中id屬性值為1的province元素時,我可以使用/area/province[@id='1'],即在province后面加上[@id='1']這個條件,這時我就獲取到了area下id屬性為1的province元素了。接著我要獲取該province元素下所有的city,那么只需在后面加上/city即可,所以最終的xpath表達(dá)式為:/area/province[@id='1']/city。
還有,因?yàn)榇瞬樵兊膞ml是在當(dāng)前網(wǎng)站的根目錄,如果是在其它地方,那么在查詢的時候要加上namespace
將從xml文件中讀取到的值組裝成對應(yīng)的實(shí)體對象只后,我使用了System.Web.Script.Serialization命名空間下的JavaScriptSerializer類中的Serialize方法將得到的實(shí)體對象序列化成json數(shù)據(jù)返回給客戶端。
第四步:編寫html和js。
復(fù)制代碼 代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>省市縣三級聯(lián)動下拉列表</title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$.post("/Handler.ashx", { "type": "province" }, function (data, status) {
if (status == "success") {
if (data != "failure") {
data = $.parseJSON(data); //解析服務(wù)器返回的json數(shù)據(jù)
for (var i = 0; i < data.length; i++) {
var value = data[i].Id + ":" + data[i].Name; //設(shè)置option選項(xiàng)的值,格式為:"編號:名稱"
$("#province").append("<option value='" + value + "'>" + data[i].Name + "</option>");
}
}
}
}, "text");
$("#province").change(function () {
var selectValue = $(this).val(); //獲取選擇的省級option的值
var provId = selectValue.split(':')[0]; //取出編號
var provTxt = selectValue.split(':')[1]; //取出名稱
$("#txtProvince").html(provTxt); //顯示選擇的省的名稱
$("#city").html("<option>==請選擇市==</option>"); //當(dāng)省級改變時將市級清空
$("#county").html("<option>==請選擇縣==</option>"); //當(dāng)省級改變時將縣級清空
$.post("/Handler.ashx", { "province": provId, "type": "city" }, function (data, status) {
if (status == "success") {
if (data != "failure") {
data = $.parseJSON(data);
for (var i = 0; i < data.length; i++) {
var value = data[i].Id + ":" + data[i].Name;
$("#city").append("<option value='" + value + "'>" + data[i].Name + "</option>");
}
}
}
}, "text");
});
$("#city").change(function () {
var provId = $("#province").val().split(':')[0];
var selectValue = $(this).val(); //同上
var cityId = selectValue.split(':')[0]; //同上
var cityTxt = selectValue.split(':')[1]; //同上
$("#txtCity").html(cityTxt); //顯示選擇的市的名稱
$("#county").html("<option>==請選擇縣==</option>"); //同上
$.post("/Handler.ashx", { "province": provId, "city": cityId, "type": "county" }, function (data, status) {
if (status == "success") {
if (data != "failure") {
data = $.parseJSON(data);
for (var i = 0; i < data.length; i++) {
var value = data[i].Id + ":" + data[i].Name;
$("#county").append("<option value='" + value + "'>" + data[i].Name + "</option>");
}
}
}
}, "text");
});
$("#county").change(function () {
$("#txtCounty").html($(this).val().split(':')[1]); //顯示選擇的縣的名稱
});
});
</script>
</head>
<body>
<!--省-->
<select id="province" name="province">
</select>
<!--市-->
<select id="city" name="city">
</select>
<!--縣-->
<select id="county" name="county">
</select>
<br />
<span id="txtProvince" style="color: #ff0000;"></span>- <span id="txtCity" style="color: #ff0000;"></span>- <span id="txtCounty" style="color: #ff0000;"></span>
</body>
</html>
關(guān)于使用jQuery與服務(wù)器通信,我使用的是$.post方法,該方法的具體使用可以參考jQuery官方文檔,這里我想說的是,遍歷后通過對象.屬性訪問時,這個屬性的名字是區(qū)分大小寫的,這個名字是服務(wù)器端定義的名字,因?yàn)榉?wù)器序列化的是服務(wù)器端的實(shí)體對象。
在這個例子中,關(guān)鍵點(diǎn)就是如何使用XPath表達(dá)式,如何調(diào)用System.Xml.XPath命名空間下的XPathSelectElements(string xpath)方法。
最終結(jié)果如下圖:

代碼13,31,50行可以優(yōu)化。
不建議多次修改DOM結(jié)構(gòu),可以拼接字符串后一次append
數(shù)據(jù)源是xml,我會用xslt來解析xml直接輸出<option>,這樣就不用再前臺拼接字符串了。要求所有節(jié)點(diǎn)ID不能有相同。
復(fù)制代碼 代碼如下:
<select id="province" name="province" next="#city">
</select>
<select id="city" name="city" next="#county">
<option>==請選擇市==</option>
</select>
</form>
<select id="county" name="county">
<option>==請選擇縣==</option>
</select>
<script type="text/javascript">
$("#province,#city").change(function () {
var nextSelect = $(this.getAttribute("next"));
//if (nextSelect.size() > 0) {
nextSelect.find("option:gt(0)").remove();
var _id = $(this).find("option:selected").val();
var query = { parentId: _id };
$.get("/Handler.ashx", query, function (data, status) {
//...
nextSelect.append("<option>...</option>....");
});
//}
});
</script>
您可能感興趣的文章:
- Java框架SSH結(jié)合Easyui控件實(shí)現(xiàn)省市縣三級聯(lián)動示例解析
- 基于jQuery+JSON的省市二三級聯(lián)動效果
- jquery實(shí)現(xiàn)的省市區(qū)三級聯(lián)動
- jQuery select表單提交省市區(qū)城市三級聯(lián)動核心代碼
- 簡單實(shí)用jquery版三級聯(lián)動select示例
- jQuery JSON實(shí)現(xiàn)無刷新三級聯(lián)動實(shí)例探討
- ajax.net +jquery 無刷新三級聯(lián)動的實(shí)例代碼
- asp.net省市三級聯(lián)動的DropDownList+Ajax的三種框架(aspnet/Jquery/ExtJs)示例
- jquery+json 通用三級聯(lián)動下拉列表
- SSH結(jié)合jquery實(shí)現(xiàn)三級聯(lián)動效果
相關(guān)文章
jquery 操作表格實(shí)現(xiàn)代碼(多種操作打包)
最近做東西需要對表格進(jìn)行操作,用到的動作包括:添加一行數(shù)據(jù)、刪除一行數(shù)據(jù)、上下移動數(shù)據(jù),網(wǎng)上找了很多,但是不能完全滿足我的需求,自己琢磨了下,搞了個這個東東2011-03-03jQuery-Easyui 1.2 實(shí)現(xiàn)多層菜單效果的代碼
早上打開郵箱,一位朋友問我之前JQuery-Easyui 怎么做可以實(shí)現(xiàn)多級菜單2012-01-01jQuery 1.5最新版本的改進(jìn)細(xì)節(jié)分析
jQuery 1.5 beta1出來了,從學(xué)習(xí)跟進(jìn)上來說,這一次已經(jīng)比較晚了(我竟然不知道1.5什么時候出的alpha,就這么beta了)。2011-01-01jquery自定義插件開發(fā)之window的實(shí)現(xiàn)過程
這篇文章主要介紹了jquery自定義插件開發(fā)之window的實(shí)現(xiàn)過程的相關(guān)資料,需要的朋友可以參考下2016-05-05JQuery 風(fēng)格的HTML文本轉(zhuǎn)義
astinus開發(fā)過程中,我自己就在不斷的使用。有次貼了一些JS代碼進(jìn)去,于是頁面顯示錯誤。顯然,把源代碼直接放進(jìn)html文本了——好吧,從05年轉(zhuǎn)去做網(wǎng)游以后,一直沒有正經(jīng)的做過web了。2009-07-07jquery.mousewheel實(shí)現(xiàn)整屏翻屏效果
jQuery Mousewheel 用于添加跨瀏覽器的鼠標(biāo)滾輪支持。 mousewheel事件的處理函數(shù)有一點(diǎn)小小的變化,它除了第一個參數(shù)event 外,還接收到第二個參數(shù)delta。通過參數(shù)delta可以獲取鼠標(biāo)滾輪的方向和速度。2015-08-08boxy基于jquery的彈出層對話框插件擴(kuò)展應(yīng)用 彈出層選擇器
當(dāng)大家進(jìn)行復(fù)雜功能設(shè)計(jì)的時候,在對多級聯(lián)選擇進(jìn)行設(shè)計(jì),為了獲得更好的用戶體驗(yàn)和節(jié)省頁面空間,往往會使用彈出層的方法。2010-11-11jquery實(shí)現(xiàn)點(diǎn)擊頁面回到頂部
本篇文章主要是對點(diǎn)擊回到頁面頂部或是首頁的功能進(jìn)行了介紹,這是頁面常用到的效果,需要的朋友可以過來參考下2016-11-11