创建,删除DOM

需求说明:
1、上传图片,有删除功能,可上传5张,至少上传一张
html代码如下
<div class="imgUpBox">
<div class="imgboxCon show">
<div class="imgShowBox" datatype="upImg" errormsg="图片格式错误" nullmsg="图片不能为空">
<img id="img1" src="" />
</div>
<div class="imgOprateBox">
<input type="file" class="imgInput" name="file_1" id="file1" onchange="up(this)"/>
<a class="imgUpBtn"></a>
<a class="imgDelBtn">删除</a>
</div>
</div>
</div>
jQuery 代码如下
imgDOM(5);
//新增上传DOM
function imgDOM(max){
var upID = 1;
var upNum = 1;//name是从1开始计数的,upNum的值赋给name,等价于length /*图片上传*/
$(".imgUpBox").on("click",".imgUpBtn",function(){
$(this).prev(".imgInput").click();
}); /*显示删除按钮,并创建下一个上传DOM*/
$(".imgUpBox").on("change",".imgInput",function(){//上传图片的逻辑是:上传失败依然会执行change事件
var _img = $(this).parents(".imgboxCon").find("img").attr("src");
if(_img != ""){//图片上传成功
upID = upID + 1;
$(this).next().hide().next().show();
$(this).parents(".imgboxCon").find(".imgShowBox").removeClass("Validform_error");
if($(".imgUpBox .imgboxCon").length < max){
upNum = upNum + 1; //数量最大为max
creatDom();
return upNum;
}
}
return upID;
}); /*删除图片*/
$(".imgUpBox").on("click",".imgDelBtn",function(){
var _this = $(this),
obj = _this.parents(".imgboxCon"),
index = obj.index(),
len = $(".imgUpBox .imgboxCon").length-1,
lastImg = $.trim($(".imgboxCon").eq(len).find("img").attr("src")); if(index==len){//假设删除的是最后一张,后面的代码无需执行,跳出操作
obj.remove();
creatDom();
return upNum;
}else{//如果不是最后一张,直接移除DOM
if(lastImg != ""){//如果最后一张已上传,移除DOM后,在末尾创建一个新DOM
obj.remove();
creatDom();
}else{
obj.remove();
upNum = upNum-1;
}
} for(var i=0;i<=len;i++){//name重置,ignore重置
var num = i+1;
var name = "file_" + num;
$(".imgboxCon").eq(i).find(".imgInput").attr("name",name);
$(".imgboxCon").eq(i).find(".imgShowBox").attr("ignore","ignore");
}
$(".imgboxCon").eq(0).find(".imgShowBox").removeAttr("ignore");
return upNum; }); //创建图片上传Dom
function creatDom(){
var _html = '<div class="imgboxCon show">'
+' <div class="imgShowBox" ignore="ignore" datatype="upImg" errormsg="图片格式错误" nullmsg="图片不能为空">'
+' <img id="img'+ upID +'" src="" />'
+' </div>'
+' <div class="imgOprateBox">'
+' <input type="file" class="imgInput" name="file_'+ upNum +'" id="file'+ upID +'" onchange="up(this)">'
+' <a class="imgUpBtn"></a>'
+' <a class="imgDelBtn">删除</a>'
+' </div>'
+' </div>'
$(".imgUpBox").append(_html);
}
}
只需要在方法调用的时候,填写图片可上传的最大张数即可,以防需求变更:
如:上传1张——imgDOM(1);
上传5张——imgDOM(5);
上传10张——imgDOM(10);
以上仅为个人拙见,如有不正确的地方,欢迎指正。^_^
创建,删除DOM的更多相关文章
- 二叉排序树(BST)创建,删除,查找操作
binary search tree,中文翻译为二叉搜索树.二叉查找树或者二叉排序树.简称为BST 一:二叉搜索树的定义 他的定义与树的定义是类似的,也是一个递归的定义: 1.要么是一棵空树 2.如果 ...
- 在后台对GameObject进行"创建"||"删除"动作
在后台对GameObject进行"创建"||"删除"动作 建立 public GameObject Pre;//在编辑器中用来绑定的Prefabs public ...
- jQuery删除DOM节点
jQuery删除DOM节点 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- angular.js ng-repeat动态插入删除dom节点
既然上面提到 angular.js 下无需用户直接操作dom ,而是在编译间断 dom 与 控制层model 实现了双向绑定,一方做出改变,另一方就会立即改变,那问题来了,我想插入一个文本框和按钮,并 ...
- angular.js 动态插入删除dom节点
angular.js 是新一代web开发框架,它轻松在web前端实现了MVC模式,相比 jquery 模式,这种新玩意竟然不需要开发者直接去操作dom . 作为前端开发而不去操作dom ,这简直是一个 ...
- hive 学习系列二(数据库的创建删除修改) 拿走,不谢。
database 相当于一个目录或者命名空间,用来更好地进行表的管理 在hdfs 的目录位置大致如下: [root@iZbp12vtv76y9q3d633bh6Z /]# hadoop fs -ls ...
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop ...
- 2016/1/27 1, File 创建 删除 改名 换路径 2,输出流 不覆盖 换行输入 3,输入流
1, File 创建 删除 改名 换路径 package Stream; import java.io.File; import java.io.IOException; public cla ...
- MongoDB 表(集合) 创建删除、数据增删改查
MongoDB 表(集合) 创建删除和增删改查数据 创建一个集合(emp) 在创建集合之前先使用use xxx,选择数据库,如果没有会创建(并不是真正的创建,只有在数据库里面保存集合数据之后才能够真正 ...
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
这篇文章主要介绍了oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包等相关资料,需要的朋友可以参考下 oracle 创建,删除存储过程,参数传递,创建 ...
随机推荐
- Codevs3278[NOIP2013]货车运输
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description A 国有 ...
- UI 自定义视图 ,视图管理器
一>自定义label - textField 视图 自定义视图:系统标准UI之外,自己组合而出的新的视图 iOS 提供了很多UI组件 ,借助它们,我们可以做各种程序 尽管如此,实际开发中,我们还 ...
- js面向对象总结
原型链 新创建的xiaoming的原型链是: xiaoming ----> Student.prototype ----> Object.prototype ----> null 也 ...
- 使用spring webflow,在前台页面中如何显示后端返回的错误信息
刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...
- RequireJS基础知识
RequireJS解决代码依赖问题,异步加载js,避免页面失去相应 RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤.可以用它来加速.优化代 ...
- WPF中MeasureOverride ArrangeOverride 的理解
1. Measure Arrange这两个方法是UIElement的方法 MeasureOverride ArrangeOverride这两个方法是FrameworkElement的方法,Framew ...
- Jenkis Editable Email Notification Plugin 使用介绍
Jenkis Editable Email Notification Plugin 使用介绍 前言 Jenkins本身提供的Email插件功能实在有限,只能提供当前Job的基本信息,比如成功.失败以及 ...
- Node.js编程之异步
异步操作 Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务.这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执 ...
- 自适应滤波:最小均方误差滤波器(LMS、NLMS)
作者:桂. 时间:2017-04-02 08:08:31 链接:http://www.cnblogs.com/xingshansi/p/6658203.html 声明:欢迎被转载,不过记得注明出处哦 ...
- Java对象的内存模型(一)
前言 新人一枚,刚刚入门编程不久,各方面都在学习当中,博文有什么错误的地方,希望我们可以多多交流! 最近,在开发App后台过程中,需要将项目部署到云服务器上.而云服务器的内存大小却只有1G.要如何做到 ...