给jquery ajax 拼接的html标签绑定一个tap事件总是无法点击?

ajax得到的数据拼接

esub+="<li  class='chapter_li'>

<p class='chapter_title'><s class='fontIcon sicon'></s>"+etitle+"</p>



<ul class='chapter_section' style='display: none'>"+tsub+"</ul>

</li>";
$(".chapter").html(esub);

//然后在ready()中写这段代码
$(".chapter_title").on("tap",function(){
            var check=$(this).css("display");
            if(check=="none"){
                $(this).next().css("display","block");
                $(this).children("s").css("content","\ea41");
            }
            else if(check=="block"){
                $(this).next().css("display","none");
                $(this).children("s").css("content","\ea43");
            }
        });

项目打开后无法执行,其他页面定义的标签绑定事件就没问题不知该如何解决

阅读 8.9k
4 个回答
方法一:
$("body").on("click",".chapter_title",function(){
     // 干什么
})
方法二:
settimeOut(function(){
    // 加入事件 
},0)

事件是需要绑定在元素上的,当你的内容是后加载的情况下就必定会发生,但是如果你把事件绑定在body上,然后去选择元素则不一样。具体没太研究,求大神说下原理

1.$(".chapter").on("click",".chapter_title",function(){
})
元素是后加载的,不要直接绑定在元素上,最好绑定在已经加载的父元素上。
2.jquery本身是没有tap事件的吧,是在jquery mobile里头的。楼主加载jquery mobile了么?

没有报错信息和逻辑代码,大概猜测是因为你在ready中执行,而ajax异步请求回来时还没有生成节点,建议用事件代理

我也遇到过,我不是搞前端的,具体原因我也不太清楚,但是我在ajax里面又绑定了一次就可以了。不过我觉得应该是你的那个绑定事件应该是执行了在你ajax数据生成之前,所以ajax生成时候没有绑定到事件。我也是很懵懂,大神勿喷

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题