本文实例讲述了jQuery通过控制节点实现仅在前台通过get方法完成参数传递。分享给大家供大家参考。具体分析如下:
这样也是HTML DOM那部分的内容,javascript与jquery等前端脚本语言的核心就是要控制每一个节点,对每一个节点进行增删改查,这样才能够真正地活用javascript与jquery等前端脚本写出一个又一个华丽丽的东西。
javascript控制节点,笔者已经在之前的【JavaScript针对网页节点的增删改查用法实例】有过相关介绍,现在是通过jquery这一javascript进阶的脚本语言,来控制节点,并且在此基础上,使用jquery来在不同网页间传递参数,仅在前台通过get方法完成参数传递,挂到服务器,不需要jsp与asp,写一些request等服务器语言来获取参数。
一、基本目标
在网页中有存在于黑色div-红色div-蓝色p之下的span节点,一旦点击,则分别获取其上面节点的id
点击增加按钮可以增加超级链接节点,其中每一个超级链接都带有中文参数你好1,你好2,你好3……,而且滚动条自动随节点的增加而滚动,向jqrec.html传递,这个你好x参数,jqrec.html页面能够获取到这个中文参数
点击清空按钮可以清空ul下面的所有节点
二、制作过程
jqrec.html全代码如下,所使用的函数,涉及到分析url地址的正则表达式,不用细究。真正作用的代码则只有,$(\"#rec\").text(unescape(getUrlParam(\"text\")));
<!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=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>jqrec</title>
<script src=\"js/jquery-1.11.1.js\"></script>
</head>
<body>
<p>
你点击的链接是:<strong><span id=\"rec\" style=\"color:#F00;\"></span></strong>,这与浏览器上的get方法传过来的text参数完全相同~
</p>
<p>
text上传递的参数是中文来的哦,需要结果译码解码~
</p>
<p>
<a href=\"./jqsend.html\">返回jqsend.html再试一次~</a>
</p>
</body>
</html>
<script>
/*此函数配合unescape函数能够对url上get方法传递过来的utf-8元素进行解码*/
function getUrlParam(name)
{
var reg = new RegExp(\"(^|&)\"+ name +\"=([^&]*)(&|$)\");
var r = window.location.search.substr(1).match(reg);
if (r!=null) return unescape(r[2]); return null;
}
$(function() {
$(\"#rec\").text(unescape(getUrlParam(\"text\")));
});
</script>
jqsend.html全代码如下,具体代码请看注释:
<!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=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>jqsend</title>
<script src=\"js/jquery-1.11.1.js\"></script>
</head>
<!--html部分,设计一个复杂的图层,里面包含着四重节点,也就是节点树四层-->
<body>
<div id=\"fatherdiv2\" style=\"border:solid;border-color:#000\">
<div id=\"fatherdiv\" style=\"border:solid;border-color:#f00\">
<p id=\"fatherp\" style=\"border:solid;border-color:#00f\">
<span id=\"findmyfather\">
我的父节点
</span>
</p>
</div>
</div>
<br />
<!--两个按钮-->
<button id=\"add\">增加</button>
<button id=\"clear\">清空</button>
<!--用来存放增加的超链接列表-->
<ul id=\"testul\"></ul>
</body>
</html>
<script>
/*$(function(){});相当于$(document).ready(function (){});函数,一载入,就执行的主函数*/
$(function() {
/*计数id*/
var id=0;
/*add按钮点击事件*/
$(\"#add\").click(function (){
id=id+1;
var li=\"<li id=\\\"id\" +id.toString()+ \"\\\"><a></a></li>\";
/*在testul列表中,增加如上所述的li节点*/
$(\"#testul\").append(li);
/*寻找新增的id为idx(其中x为计数器var id的值)的li节点下的a节点,并且把其中的元素修改为你好x,jquery里面的.html相当于javascript里面的innerHTML*/
$(\"#id\"+id.toString()).find(\"a\").html(\"你好\"+id);
/*设置此a元素的href属性为,jqrec.html=“你好”+id,由于链接中不可以带中文,所以用两次escape将其编码为utf-8编码,用一次会出现bug,后面的unescape获取不了,不知道为什么*/
$(\"#id\"+id.toString()).find(\"a\").attr(\"href\",\"./jqrec.html?text=\"+escape(escape(\"你好\"+id)));
/*设置滚动条随着testul的所在高度滚动,这段代码在ie8以下会失效*/
$(\"body\").scrollTop($(\"#testul\").height());
});
/*clear按钮点击事件*/
$(\"#clear\").click(function (){
/*把testul下面的所有元素清空,计数器清零*/
$(\"#testul\").empty();
id=0;
});
/*findmyfather行内文本点击事件*/
$(\"#findmyfather\").click(function(){
/*this代表被按的findmyfather,取其上一级父节点的id*/
thisid=$(this).parents().attr(\"id\");
alert(\"我的父节点是:\"+thisid);
/*这样可以往前寻找第一个div元素的id*/
thisid=$(this).parents(\"div\").attr(\"id\");
alert(\"我的第一个div父节点是:\"+thisid);
/*这样可以往前寻找第二个div元素的id*/
thisid=$(this).parents(\"div\").parents(\"div\").attr(\"id\");
alert(\"我的第二个div父节点是:\"+thisid);
});
});
</script>
希望本文所述对大家的jQuery程序设计有所帮助。