使用jQuery .removeClass时没有任何事情发生

时间:2018-06-06 16:05:55

标签: jquery

.addClass正常工作,但是当我在单击.close元素时尝试删除同一元素上的同一个类时,没有任何反应。我已将原始元素保存在$currGallery中。当我在click.log上点击它时,它会显示正确的元素对象。非常感谢任何帮助!

    var $currGallery = null;

    var handler = function() {
      $currGallery = $(this);
      $(this).addClass("open-gallery");
      //$('.services > li').unbind( "click", handler );
    };

    $('.services > li').bind("click", handler);

    $('.close').click(function(){
      //console.log($currGallery);
      $currGallery.removeClass("open-gallery");
      //$('.services > li').bind( "click", handler );
    });

2 个答案:

答案 0 :(得分:1)

最有可能(没有看到你的html .close元素,也在.sevices > li元素内。因此,当您单击.close时,它会正确删除该类,但事件也会冒泡到.sevices > li,而.close会重新添加该类。

如果是这种情况,那么在li处理程序上,您需要停止传播,使其永远不会到达$('.close').click(function(e){ e.stopPropagation(); $currGallery.removeClass("open-gallery"); });

ln -s /usr/local/Cellar/graph-tool/2.26_2/lib/python3.6/site-packages/graph_tool /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

答案 1 :(得分:1)

根据我对您发布的问题的理解,我建议您使用jquery toggleClass函数。

下面是示例代码和文档的链接。

http://api.jquery.com/toggleclass

<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<title>toggleClass demo</title>
		<style>
			p {
				margin: 4px;
				font-size: 16px;
				font-weight: bolder;
				cursor: pointer;
			}
			.blue {
				color: blue;
			}
			.highlight {
				background: yellow;
			}
		</style>
		<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
	</head>
<body>

	<p class="blue">Click to toggle</p>

	<script>
		$( "p" ).click(function() {
			$( this ).toggleClass( "highlight" );
		});
	</script>
	
</body>
</html>