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

jquery on click事件绑定又解绑

jquery on click事件绑定又解绑

慕的地8271018 2018-07-23 21:02:52
emmm,还是上代码比较清晰点,实在是不知道怎么描述这个了 //光标处插入标签code,动态绑定             $("#tagList").on("click","li",function () {                     $(this).unbind("click").click(function () {                        var selectedTag = $.trim($(this).text());                         tmplTagListObj.forEach(function (item, index) {                            if (item.name == selectedTag) {                                 $("#tplContent").insertAtCaret("$" + "{" + item.code + "}");                             }                         })                     })                // }             });上面是点击li标签进行一个文字插值的操作,(insertAtCaret这个是插值的函数,正常无问题)效果如下图点击一下标题会自动生成一个$(title)的占位符,标签那一栏可以动态添加新的标签原先的做法是直接绑定点击事件,出现的bug如下:约束就是同一弹出框的标签名不能重复,不同弹框下的标签名可以重复对a弹出框添加一个标签,叉掉a弹框之后,在b弹出框再动态添加一个名称相同的标签,点击一下会生成两个占位符,重复操作,到了c弹出框就是三个相同的占位符,以此类推于是改成了问题描述里的写法,很显然,这种写法第一次点击毫无反应,一切正常反应都从鼠标第二次点击开始我想知道 如何解决第一次点击不生效的情况?ps:尝试在外面一层模拟一次点击事件,不起作用,然后在里面一层模拟一次点击事件,F12里面打印出很多次的console数据,同不起作用
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

很明显你在叉掉标签之后 没有清理tmplTagListObj这个里面的数据 新添加相同的标签之后 实际上tmplTagListObj里面已经存在了一个相同的标签

而你click事件里面用forEach遍历了tmplTagListObj 导致多次进入if语句 然后就添加了多个占位符


查看完整回答
反对 回复 2018-07-29
  • 1 回答
  • 0 关注
  • 1163 浏览
慕课专栏
更多

添加回答

举报

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