为什么第二个click运行不了啊,第一个运行没问题,第二个点了完全没反应

buggs
  • 47

图片描述

效果,替换都可以,但是第二个click就是运行不了

回复
阅读 4.6k
12 个回答
dollor
  • 2.1k
✓ 已被采纳

改为

$('body').on('click', '#hideButton', function(){
    //此处省略
})

因为你的idhideButton是后来加上去的,绑定时是不存在id 为hideButton的元素

直接绑定到body上就行了 $('body').on('click','#hideButton', function(){

});

JasonKidd
  • 3.3k

1、你把attr改成prop
2、你在绑定click listener函数的时候还没有产生id为hideButton的元素。

因为在js执行的时候$('#hideButton')这个选择器在DOM上找不到.这种形式不是动态的.
改为:

$('#hideButton').on('click',function(){
    alert("111");
})
这种形式是动态的选择器

或是用类标签来标识

$('.hideButton').on('click',function(){
    alert("111");
})
莫烦我啊
  • 1
新手上路,请多包涵

试试时间委派

动态生成选择器,需要$("body").on("click",'#hideButton',function () {

        alert(1);
    })

事件委托,你在给第二个#name 加事件的时候,选择器其实是找不到这个元素的, 因为你的id是动态添加上去了

.click()绑定需要已经存在的元素,因为你的id="hideButton"是后来才加的,原来的DOM结构是没有的,所以绑定不了。你可以用事件委托,$('body').on('click', '#hideButton', function(){//点击时要执行的}),作用是把click绑定到body上,当触发事件时会在body里找到"#hideButton"作为触发的对象

.click 改成 .on("click",function(){.....}) 用一下事件委托 试试

发福的冬瓜
  • 2
新手上路,请多包涵

使用live进行事件绑定就好了

getcww
  • 256

我曾经的写法是静态绑定~

$('.pushButton').attr('onclick','$.btn(this)');
$.btn = function btn(obj){
   //点击执行的代码  如 $(obj).css('color','#f60');
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏