我确定在处理javascript时这是常见问题,但我似乎无法找到解决方案。
我试图在"卡"上创建两个函数,但是通过卡片的状态来区分。
"启动"的一个功能卡和一个功能,以#"删除"卡片。但是当我开始使用卡时,我无法使用相同的功能将其删除。
HTML
<div class="card started">click to hide</div>
<div class="card not-started">click to start</div>
JS
$(".card.not-started").on("click", function () {
$(this).removeClass("not-started").addClass("started").html("click to hide");
});
$('.card.started').on("click", function () {
$(this).fadeOut();
});
答案 0 :(得分:3)
http://jsfiddle.net/wm99z4sj/1/
$(document).on("click", ".card.not-started", function () {
$(this).removeClass("not-started").addClass("started").html("click to hide");
});
$(document).on("click",'.card.started', function () {
$(this).fadeOut();
});
试试这样。 如果您将文档用作父文档,它将查找在运行时添加的该类的元素。
答案 1 :(得分:0)
稍作修改即可解决此问题。
$(".card").on("click", function () {
var el = $(this);
if (el.hasClass("not-started")){
el.toggleClass("not-started started").html("click to hide");
} else {
el.fadeOut();
}
});
通过这种方式,您将始终在.card
上委派一个点击处理程序,但根据您提供的类,它会更改功能。
<强> DEMO 强>
如果您想保留2个单独的功能,可以从$(document.body)
或$(".card").parent()
委派代码:
var parent = $(".card").parent();
parent.on("click", ".not-started", function () {
$(this).toggleClass("not-started started").html("click to hide");
});
parent.on("click", ".started", function(){
$(this).fadeOut();
});
<强> DEMO 强>