为什么这不起作用?我绝对疯了。
<span class="fav"></span>
$('.fav').on('click', function() {
$(this).addClass('item-selected');
});
$('.fav.item-selected').on('click', function() {
$(this).removeClass('item-selected');
});
以下是完整的代码。这是第二部分不会撤消。
$('.fav').on('click', function() {
$(this).addClass('item-selected').next('span.notification').toggleClass('show-notification').html("Hello world!");
setTimeout(function(){
$('.show-notification').removeClass('show-notification');
},4000);
});
$('.fav.item-selected').on('click', function() {
$(this).removeClass('item-selected').next('span.notification').toggleClass('show-notification').html("Goodbye world!");
setTimeout(function(){
$('.show-notification').removeClass('show-notification');
},4000);
});
答案 0 :(得分:2)
当您声明.fav
元素动态附加到DOM时,您需要使用委托事件处理程序。另请注意,当您在连续点击时切换课程时,您不需要多个处理程序;你可以使用toggleClass()
。试试这个:
$('#container').on('click', '.fav', function() {
$(this).toggleClass('item-selected');
});
&#13;
.item-selected {
color: #C00;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
<span class="fav">Item</span>
<span class="fav">Item</span>
<span class="fav">Item</span>
<span class="fav">Item</span>
</div>
&#13;
答案 1 :(得分:2)
这是第二部分不会撤消。
这是因为你的选择器.fav.item-selector
没有返回元素
试试这个
$('.fav').on('click', function() {
if($(this).hasClass('item-selected')) {
$(this).removeClass('item-selected').next('span.notification').toggleClass('show-notification').html("Goodbye world!");
setTimeout(function(){
$('.show-notification').removeClass('show-notification');
},4000);
}
});
答案 2 :(得分:1)
因为类span
的{{1}}不是原始DOM的一部分,这是jQuery的工作原理。你需要让它更具活力:
HTML:
item-selected
jQuery的:
<span class="fav target-click"></span>
答案 3 :(得分:0)
这是工作代码,这要归功于所提供答案中的帮助。
$(".job-listings").on('click', '.fav', function() {
$(this).addClass('item-selected').next('span.notification').addClass('show-notification').html("Hello world!");
setTimeout(function(){
$('.show-notification').removeClass('show-notification');
},1000);
});
$(".job-listings").on('click', '.fav.item-selected', function() {
$(this).removeClass('item-selected').next('span.notification').addClass('show-notification').html("Goodbye world!");
setTimeout(function(){
$('.show-notification').removeClass('show-notification');
},1000);
});
答案 4 :(得分:-1)
function callBindEvents()
{
$('.fav').unbind('click');
$('.fav').bind('click', function() {
$(this).addClass('item-selected');
callBindEvents();
});
$('.fav.item-selected').unbind("click");
$('.fav.item-selected').bind('click', function() {
$(this).removeClass('item-selected');
callBindEvents();
});
}
$( document ).ready(function() {
callBindEvents();
})
当你第一次添加onclick事件时,fav.item-selected不存在。它是在稍后添加的,因此您需要在将该类添加到div之后编写onclick事件。