HTML中jQuery添加进去的js函数会被页面存储记忆

热度:4022020-05-17 16:56 收藏 0 点赞 0

最近使用jQuery给页面dom添加div及函数,上传图片的函数,添加并移除后,函数依旧被记忆,如果你执行同一个函数时,则会同时执行两次!

如下,使用ajax给页面添加HTML及函数:

function get_fields(tid,id){
    var id = arguments[1]?arguments[1]:0;
    $.post("{fun U('common/get_fields')}",{molds:$("#molds").val(),tid:tid,id:id},function(res){
      if(res.code==0){
        
        $("#fields_ext").html(res.tpl);
      }
      
    },'json');
  }

添加进来的函数如:

<div class="form-control">
            <label for="">商品图集:</label>
              <span class="view_img_pictures"></span><br>
              <input name="pictures" type="hidden" id="pictures" value=""><br>
              <input type="file" class="upload_input_pictures" file-name="file_pictures" name="file_pictures[]" multiple="multiple" id="upload_input_pictures">
        </div>
<script type="text/javascript">
			 $(document).on("change","#upload_input_pictures",function(){
			    var form=document.getElementById("jizhiform");
			    var data =new FormData(form);
			    data.append("filename",$(this).attr("file-name"));
			    $.ajax({
			       url: "http://www.demo.mm/common/multiuploads.html",//处理图片的文件路径
			       type: "POST",//传输方式
			       data: data,
			       dataType:"json",   //返回格式为json
			       processData: false,  // 告诉jQuery不要去处理发送的数据
			       contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
			       success: function(response){
			       	console.log(response);
			        if(response.code==0){
			          var result = "";
			          for(var i=0;i<response["urls"].length;i++){
			          	 result +='<span><img src="' + response["urls"][i] + '" height="100"  /><input name="pictures_urls[]" type="text" value="' + response["urls"][i] + '" ><span onclick="deleteImage_auto(this)">删除</span></span>';
			             	
			          }
			          $(".view_img_pictures").append(result);
			         
			        }else{
			          alert(response.error);
			        }
			        
			       }
			    });
			  });
		</script>

如果重复操作两次,上传的时候则会执行这个js两次!


解决方法:

给对应的操作加上随机数,使每次操作的dom都不一样,执行的都是唯一的js函数,如加上数字:

<script type="text/javascript">
			 $(document).on("change","#upload_input_pictures_1919",function(){
			    var form=document.getElementById("jizhiform");
			    var data =new FormData(form);
			    data.append("filename",$(this).attr("file-name"));
			    $.ajax({
			       url: "http://www.demo.mm/common/multiuploads.html",//处理图片的文件路径
			       type: "POST",//传输方式
			       data: data,
			       dataType:"json",   //返回格式为json
			       processData: false,  // 告诉jQuery不要去处理发送的数据
			       contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
			       success: function(response){
			       	console.log(response);
			        if(response.code==0){
			          var result = "";
			          for(var i=0;i<response["urls"].length;i++){
			          	 result +='<span><img src="' + response["urls"][i] + '" height="100"  /><input name="pictures_urls[]" type="text" value="' + response["urls"][i] + '" ><span onclick="deleteImage_auto(this)">删除</span></span>';
			             	
			          }
			          $(".view_img_pictures").append(result);
			         
			        }else{
			          alert(response.error);
			        }
			        
			       }
			    });
			  });
		</script>


暂无评论
登录后才可以评论~立即登录

如何获取资源?

您可以关注底部公众号,回复文章提示的 “ 关键词 ” 获取对应资源。

每日分享

每日分享收集的网络资源,其中包含开源项目、小工具、常用软件,以及音频视频、电子书籍等。

外卖天天领红包,饿了么,美团红包天天都有!

外卖天天领红包,饿了么,美团红...

最低每顿可省2元

分享两个远程工具-ToDesk和向日葵

分享两个远程工具-ToDesk和向日葵...

在工作生活中经常用到远程,QQ远程很卡,第三方远程工具就比较方便了。

爱奇艺万能播放器2018年完整版

爱奇艺万能播放器2018年完整版

2018年的爱奇艺万能播放器,功能齐全,没有广告!

分享500套个人求职简历模板

分享500套个人求职简历模板

500套免费求职简历下载!

一款最近很火的自动跳过广告APP,无root直装版

一款最近很火的自动跳过广告APP,...

自动跳过广告,无需root

WPS免费去广告电脑软件

WPS免费去广告电脑软件

wps广告实在太多了,下载一个去广告版本