我试图在jsfiddle中做一些表面上看起来很简单的事情而且它不起作用。基本上我有一个h1 html标签,上面有#34; me"以及一个带有" poo"的按钮。第一次点击工作,我的CSS颜色改变,但第二次点击不起作用?
$(".poo").click(function(e){
e.preventDefault();
$(".me").css("color","green");
var haha = $("<button>Click Me!!!</button>");
$(this).after(haha);
$(haha).addClass("changer");
$(this).hide();
});
$(".changer").click(function(e){
e.preventDefault();
$(".me").css("color","black");
$(this).hide();
});
答案 0 :(得分:2)
changer
点击处理程序在元素存在之前绑定。请尝试使用$.on
方法。
$('body').on('click', '.changer', function() {...})
这是有效的,因为事件处理程序绑定到页面上已存在的文档body
。当正文中的任何地方发生单击时,jQuery将检查被点击的元素是否与选择器.changer
匹配,如果是,则执行回调。
或者,您可以在第一个回调中绑定$('.changer').click
事件。
答案 1 :(得分:2)
将第二次点击绑定到父元素:
$(document).on('click', '.changer', function() {
//function here
});
答案 2 :(得分:1)
更新小提琴:http://jsfiddle.net/0yodg7gb/7/
$(".poo").click(function(e){
e.preventDefault();
$(".me").css("color","green");
var haha = $("<button>Click Me!!!</button>").addClass('changer');
$(this).after(haha);
$(haha).addClass("changer");
$(this).hide();
bindClick();
});
function bindClick(){
$(".changer").bind('click',function(e){
e.preventDefault();
$(".me").css("color","black");
$(this).hide();
});
}