检查这个:Working example
让我们一步一步来
我想点击#icon,将.contact 的类更改为.contactexpand(或只是附加它)。[…] 如果可能的话,再次单击图标会再次更改课程。
您想使用该toggleClass()方法来实现这一点。简单地:
$('#icon').on('click', function(e){
$(this).parent()
.toggleClass('contact')
.toggleClass('contactexpand');
});
然后我希望身体上的点击将课程改回来
您必须确保body 删除contactexpandclass并添加contact. 在这一点上,我只是给容器元素一个id(或者class如果你愿意的话),只是为了让事情变得更简单。然后你做的很简单:
$('body').on('click', function(e){
$('#thisdiv')
.removeClass('contactexpand')
.addClass('contact');
});
但是,当单击新类 .contactexpand 时,这当然不应该发生。
我认为这是其他答案错过的步骤。由于您在任何地方单击,您也会单击body元素,因此您将始终在 上触发 click 事件body,因此删除contactexpand该类并添加该类contact。
输入event.stopPropagation()。此方法将确保事件不会在 DOM 中冒泡,并且不会触发body点击。
$('#thisdiv').on('click', function(e){
e.stopPropagation();
});
Working example