为了账号安全,请及时绑定邮箱和手机立即绑定

请教jQuery绑定事件的问题

请教jQuery绑定事件的问题

PHP
繁星coding 2019-03-14 04:39:25
最终想实现的功能是,在一个表单内,通过动态增加文本框和上传图片功能,不限制数量的设置图片和图片标题在最外层用一个form表单统一提交所有的图片链接、图片标题。 网上找的php ajax上传图片,我在使用动态增加文本框和上传图片时,将“获取”按钮绑定事件。就可以在新生成的UL中,获取当前UL下title[]的值。想用类似方法在新生成的UL中点击按钮实现上传。发现jQuery中直接是new了一个对象出来。不知道该如何绑定。 现在点击默认的上传按钮,可以实现上传。但动态生成出来的上传按钮就点击无效。 代码中引入的plupload.full.min.js的文档是http://chaping.github.io/plup... <!DOCTYPE html> <html> <head> </head> <script type="text/javascript" src="http://www.sucaihuo.com/Public/js/other/jquery.js"></script> <script type="text/javascript" src="plupload.full.min.js"></script> <script type="text/javascript"> $(function() { var uploader = new plupload.Uploader({ //创建实例的构造方法 runtimes: 'html5,html4', //上传插件初始化选用那种方式的优先级顺序 browse_button: 'btn', // 上传按钮 url: "ajax.php", filters: { max_file_size: '500kb', //最大上传文件大小(格式100b, 10kb, 10mb, 1gb) mime_types: [ //允许文件上传类型 { title: "files", extensions: "jpg,png,gif" }] }, multi_selection: false, //true:ctrl多文件上传, false 单文件上传 init: { FilesAdded: function(up, files) { //文件上传前 if ($("#ul_pics").children("li").length > 30) { alert("您上传的图片太多了!"); uploader.destroy(); } else { var li = ''; plupload.each(files, function(file) { //遍历文件 // li += "<li id='" + file['id'] + "'><div class='progress'><span class='bar'></span><span class='percent'>0%</span></div></li>"; }); // $("#ul_pics").append(li); uploader.start(); } }, // UploadProgress: function(up, file) { //上传中,显示进度条 // $("#" + file.id).find('.bar').css({ // "width": file.percent + "%" // }).find(".percent").text(file.percent + "%"); // }, FileUploaded: function(up, file, info) { //文件上传成功的时候触发 var data = JSON.parse(info.response); $(".pics").attr('src',data.pic); $(".res").val(data.name); // $("#" + file.id).html("<div class='img'><img src='" + data.pic + "'/></div><p>" + data.name + "</p>"); }, Error: function(up, err) { //上传出错的时候触发 alert(err.message); } } }); uploader.init(); $("#add").click(function(){ var a = '\ <ul class="list">\ <li><a id="huoqu">获取</a></li>\ <li><input class="title" name="title[]"></input></li>\ <li><input class="res" name="res[]"></input></li>\ <li><img class="pics" name="pics[]" src="https://www.baidu.com/img/baidu_jgylogo3.gif"></img></li>\ <li>\ <a class="btn" id="btn" style="color: red;background-color: yellow;cursor: pointer;">上传图片</a>\ </li>\ </ul>\ '; $(a).appendTo("#content"); }); $("#content").delegate("#huoqu","click",function(){ console.log($(this).parent().parent().find(".title").val()); }); }); </script> <body> <ul id="ul_pics" class="ul_pics clearfix"></ul> <a id="add">增加</a> <a id="del">删除</a> <div id="content"> <ul class="list"> <li><a id="huoqu">获取</a></li> <li><input class="title" name="title[]" value="title[]">title[]</input></li> <li><input class="res" name="res[]" value="res[]">res[]</input></li> <li><img class="pics" name="pics[]" src="https://www.baidu.com/img/baidu_jgylogo3.gif"></img></li> <li> <a class="btn" id="btn">上传图片</a> </li> </ul> </div> </body> </html>
查看完整描述

6 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

同意楼上的看法。也许现在的问题只是动态生成的元素无法绑定事件。要绑定在父级元素

查看完整回答
反对 回复 2019-03-18
?
HUX布斯

TA贡献1876条经验 获得超6个赞

事件绑定在该节点未生成时已经处理绑定事件了,新生成的节点是不是有该绑定事件的,所有要把事件挂载到父节点以上的方式去处理,也可以直接挂载到body去处理。

$('body').degelate('节点','click',function(e){
//事件
})

查看完整回答
反对 回复 2019-03-18
?
跃然一笑

TA贡献1826条经验 获得超6个赞

楼上回答的都差不多了,你可以搜 事件委托机制 ,你就能更好的解决你的疑问了。

查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 521 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信