JQuery动态添加控件并取值
2016-07-08 10:24
274 查看
新做在线考试项目,添加试题时需要动态的添加控件来设置试题内容,之前只是简单的接触些JS,于是弄了本JQuery的书,看了两天做了一个例子,模拟编辑一道多选题的设置,刚开始学,不知道自己做的需不需要改进,希望不足的地方大家提出来。
需要注意的是
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <meta charset="UTF-8"> </head> <body> <input type="button" onclick="add()" value="增加"/> <input type="button" onclick="query()" value="查看"/> <ul> <li><span>A:</span> <input type="checkbox"/> <input type="text" /> <input type="button" class="del" value="删除"/> </li> <li><span>B:</span> <input type="checkbox"/> <input type="text" /> <input type="button" class="del" value="删除"/> </li> <li><span>C:</span> <input type="checkbox"/> <input type="text" /> <input type="button" class="del" value="删除"/> </li> <li><span>D:</span> <input type="checkbox"/> <input type="text" /> <input type="button" class="del" value="删除"/> </li> </ul> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ init(); }); //初始4个选项 var num=4; //添加选项 function add(){ // alert(num) //添加一行,num加一 num++; //通过知道当前有的按钮数算出选项名 var str=String.fromCharCode(64+num); //编辑新选项的html代码 var $li=$("<li>" + "<span>"+str+":</span> " + " <input type=\"checkbox\"/>" + " <input type=\"text\" class=\"str\"/>"+ " <input type=\"button\" class=\"del\" value=\"删除\"/></li>"); //将新的一行添加到<ul>中 var $parent=$("ul"); $parent.append($li); //因为添加了新的选项需要重新绑定按钮 init(); } function query(){ // alert(num) var str=""; var str1=""; //for循环查询已有控件的输入值 for(var i=0;i<num;i++){ var a= $("ul li:eq(" + i + ") :text").val(); var b= $("ul li:eq(" + i + ") :checkbox").is(':checked'); var j=i+1; str+="第"+j+"个文本框输入:"+a; str1+="第"+j+"个复选框选中:"+b; } alert(str); alert(str1); } //绑定每个ul li下的删除按钮 function init(){ //这里其实用ul li input :button就可以,但是给按钮加一个class方便用css给按钮添加样式,这里本人比较懒没有添加样式。 $("ul li input.del").unbind("click").click(function(){ //$(this).parent().remove();链式操作,$(this)为该按钮本事,parent()为其父元素即<li>,调用renmove()将整个<li>节点删除 $(this).parent().remove(); //alert(num) //for循环刷新列表,因为考试往往用ABC,所以利用ascii码通过获取当前控件的索引来转换成对应的英文字母, for(var i=0;i<num-1;i++){ //ascii码65对应的A,65加上当前索引值再转成字符即可 var str=String.fromCharCode(65+i)+":"; //定位到每个<li>下的<span>节点,将选项号刷新到页面 $("ul li:eq(" + i + ") span").html(str); } //删除一行,num减一 num--; }); } </script> </body> </html>
需要注意的是
$("ul li input.del").unbind("click").click(function()<span style="font-family: 宋体; font-size: 9pt; background-color: rgb(255, 255, 255);"> 这里加了一个unbind,是因为remove把节点删除但是该节点的引用还可以用,所有我点击一次删除按钮,以后再点删除按钮,按钮都是指向之前删除的那一项,所以加了unbind解除绑定可以解决这个问题。</span>
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- JavaScript演示排序算法
- 2015-2016网页设计趋势分析 Web Design of Trends
- jQuery Ajax 跨域调用
- 移动端的长按事件
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- $.ajax()方法详解
- jQuery ajax - ajax() 方法
- JavaScript 各种遍历方式详解
- 数组方法汇总
- jQuery Html控件基本操作(日常收集整理)
- jQuery插件实现文字无缝向上滚动效果代码
- jQuery菜单插件用法实例
- JQuery 初体验(建议学习jquery)
- flex 控件的重要属性
- 基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
- Jquery实现的table最后一行添加样式的代码
- jQuery实现向下滑出的平滑下拉菜单效果
- jQuery 练习[一] 学习jquery的准备工作