宝哥软件园

jQuery绑定事件不执行 但预警后可以正常执行

编辑:宝哥软件园 来源:互联网 时间:2021-11-07

因为不知道怎么描述这个问题,标题的主要过程如下。今天写了一个类似百度知道的问答页面,页面第一次加载的时候所有的数据都是通过ajax获取的。

想要的效果是提问者可以通过店内每个答案后面的星星符号选择采用这个答案,采用的答案的星星图标会变成全黑。我编写的复制代码如下: $('。选择_右_答案’)。bind ('click ',function () {if (currentuser==发问者){if ($ (this))。attr ('src')==' img/star _ fa。else $(这个)。attr('src ',' img/star _ fav _ empty . png ');} });choose_right_answer的意思是每个星的类名运行后,点击该星没有响应,所以我在上面显示的代码段前添加了一个提醒(' test ')。此时,加载页面并弹出对话框测试后,绑定在星形图标上的事件可以正常执行。在网上搜索一个答案后,结果是这些答案的所有节点都是动态生成的,所以可能会在这些节点完成之前进行事件绑定,这样事件就不会真正绑定到这些答案生成的节点上。有了alert的加入,可以很清楚的看到,alert语句在获取所有数据后才会执行,这就保证了数据加载后会执行事件绑定,从而将事件成功绑定到每个答案上。http://img.blog.csdn.net/20140531202827265解决方案,在jQuery中使用on来绑定事件复制代码,如下所示: $ ('# answer _ wrap ')。打开('点击','。choose _ right _ answer ',function(){ if(currentUser==提问者){ if ($(this))。attr(' src ')==' img/star _ fav _ empty . png ')$(this)。attr('src ',' img/star _ fav . png ');else $(这个)。attr('src ',' img/star _ fav _ empty . png ');} });Answer_wrap是答案所在的所有块的id。如果点击,该块中类为choose _ right _ response的所有元素将冒泡为response _ wrap,并执行相应的功能。如果有点击事件,该块中的其他元素将被忽略。这将解决动态加载数据中的事件绑定问题。

更多资讯
游戏推荐
更多+