检查这个:Working example
让我们一步一步来
我想点击#icon,将.contact 的类更改为.contactexpand(或只是附加它)。[…] 如果可能的话,再次单击图标会再次更改课程。
您想使用该toggleClass()
方法来实现这一点。简单地:
$('#icon').on('click', function(e){
$(this).parent()
.toggleClass('contact')
.toggleClass('contactexpand');
});
然后我希望身体上的点击将课程改回来
您必须确保body
删除contactexpand
class并添加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