javascript - 单击时更改 li 元素上的背景

标签 javascript jquery html css

我想做的是,当用户单击链接时,背景应更改为指示用户单击了哪个链接。我正在尝试使用 jQuery 来做到这一点:

$('.menuLink').click(function() {
  var img = $(this).find('img');
  var id = $(this).attr('id');
  $("#" + id).addClass('activeLink');
  console.log(id);
});
.menuLinks li {
  color: #ffffff;
  float: left;
  margin-left: 2px;
  width: 115px;
  height: 60px;
  background-color: #004f80;
  text-align: center;
  font-size: 13px;
  font-weight: normal;
  font-style: normal;
  font-stretch: normal;
}
.menuLinks li:hover {
  background-color: #006eb3;
  cursor: pointer;
}
.menuLinks li a {
  color: #fff;
}
.activeLink {
  color: #004f80;
  background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menuLinks">
  <li class="menuLink" id="tillstandshavare">Link1</li>
  <li class="menuLink" id="stationer">Lnk2</li>
  <li class="menuLink" id="formular">Link3</li>
  <li class="menuLink" id="fragor">Link4</li>
  <li class="menuLink" id="installningar">Link5</li>
</ul>

如您所见,我附加了 activeLink 类。但背景从未改变。我认为这是因为 menuLinks 没有被覆盖。

最佳答案

问题是因为 .activeLink 类不够具体,无法覆盖默认的 .menuLink li 样式。你需要让它更具体。另请注意,您可以使用 this 引用单击的元素,而不是手动构建 id 选择器字符串。试试这个:

$('.menuLink').click(function() {
  $(this).addClass('activeLink');
});
.menuLinks li {
  color: #ffffff;
  float: left;
  margin-left: 2px;
  width: 115px;
  height: 60px;
  background-color: #004f80;
  text-align: center;
  font-size: 13px;
  font-weight: normal;
  font-style: normal;
  font-stretch: normal;
}
.menuLinks li:hover {
  background-color: #006eb3;
  cursor: pointer;
}
.menuLinks li a {
  color: #fff;
}
.menuLinks li.activeLink {
  color: #004f80;
  background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menuLinks">
  <li class="menuLink" id="tillstandshavare">Link1</li>
  <li class="menuLink" id="stationer">Lnk2</li>
  <li class="menuLink" id="formular">Link3</li>
  <li class="menuLink" id="fragor">Link4</li>
  <li class="menuLink" id="installningar">Link5</li>
</ul>

关于javascript - 单击时更改 li 元素上的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505578/

相关文章:

javascript - dojox.widget.Toaster 的相对定位

javascript - 是否有一种干净的方法来访问命名空间内的私有(private)变量

javascript - HTTP 基本身份验证注销

javascript - 使用 jQuery 打开 fancybox onclick

javascript - 我如何订阅(或观察)DOM 窗口并在任何更改时回调;不仅仅是窗口调整大小事件、滚动事件等?

用于检测 Internet 连接的 Jquery 插件

jquery - 是否有 evalScripts : false (from mootools) equivalent in jQuery?

javascript - 使用javascript显示随机div

html - 表格中的样式 <th> 在 IE 中不起作用

javascript - 在 Html5 中,当用户提交表单时如何重新启用输入字段