首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用toggleClass

如何使用toggleClass
EN

Stack Overflow用户
提问于 2019-05-14 11:15:30
回答 2查看 52关注 0票数 0

我想用mouseover和mouseleave绑定项目,以突出我创建的函数。我的剧本不管用,我也不知道我做错了什么。

代码语言:javascript
复制
$(function() {
  $("#evtTarget").bind("mouseover", highlight);
  $("#evtTarget").bind("mouseleave", highlight);
});

function highlight(evt) {
  $("#evtTarget").toggleClass(highlighted);
}
代码语言:javascript
复制
.normal {
  width: 300px;
  height: 200px;
  background-color: Yellow;
  font-size: 18pt;
}

.highlighted {
  background-color: Red;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Binding and Unbinding Events with jQuery</title>
</head>

<body>
  <h1>Binding Event Example</h1>
  <div id="evtTarget" class="normal">Mouse over this div to see the effect. Click on it to unbind the mouseover.</div>
</body>

</html>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-14 11:17:41

你差点就把""忘在$("#evtTarget").toggleClass(highlighted);上了

应该是$("#evtTarget").toggleClass("highlighted");

Demo

代码语言:javascript
复制
function highlight() {
  $("#evtTarget").toggleClass("highlighted");
}

$(function() {
  $("#evtTarget").bind("mouseover", highlight);
  $("#evtTarget").bind("mouseleave", highlight);
});
代码语言:javascript
复制
.normal {
  width: 300px;
  height: 200px;
  background-color: Yellow;
  font-size: 18pt;
}

.highlighted {
  background-color: Red;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>Binding Event Example</h1>
<div id="evtTarget" class="normal">Mouse over this div to see the effect. Click on it to unbind the mouseover.</div>

票数 0
EN

Stack Overflow用户

发布于 2019-05-14 11:17:26

逻辑的问题在于,需要将highlighted作为字符串提供给toggleClass()方法:

代码语言:javascript
复制
$(function() {
  $("#evtTarget").bind("mouseover", highlight);
  $("#evtTarget").bind("mouseleave", highlight);
});

function highlight(evt) {
  $("#evtTarget").toggleClass('highlighted');
}
代码语言:javascript
复制
.normal {
  width: 300px;
  height: 200px;
  background-color: Yellow;
  font-size: 18pt;
}

.highlighted {
  background-color: Red;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h1>Binding Event Example</h1>
<div id="evtTarget" class="normal">Mouse over this div to see the effect. Click on it to unbind the mouseover.</div>

尽管如此,这里绝对不需要任何JS或jQuery,因为在CSS中使用:hover伪选择器可以更有效地(而且性能更好)实现相同的效果:

代码语言:javascript
复制
.normal {
  width: 300px;
  height: 200px;
  background-color: Yellow;
  font-size: 18pt;
}

#evtTarget:hover {
  background-color: Red;
}
代码语言:javascript
复制
<h1>Binding Event Example</h1>
<div id="evtTarget" class="normal">Mouse over this div to see the effect. Click on it to unbind the mouseover.</div>

如果要实现div文本中指出的行为,在单击div本身时禁用悬停行为,则可以向元素中添加一个类,然后使CSS规则足够具体,以便:hover不覆盖它,如下所示:

代码语言:javascript
复制
$('#evtTarget').click(function() {
  $(this).addClass('disable-hover');
});
代码语言:javascript
复制
.normal {
  width: 300px;
  height: 200px;
  background-color: Yellow;
  font-size: 18pt;
}

#evtTarget:hover {
  background-color: Red;
}

#evtTarget.disable-hover {
  pointer-events: none;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>Binding Event Example</h1>
<div id="evtTarget" class="normal">Mouse over this div to see the effect. Click on it to unbind the mouseover.</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56129148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档