javascript - 从父元素到子元素覆盖游标值

标签 javascript jquery html css

我被困在这两者之间,无法弄清楚出了什么问题。

有多个菜单是定义了一些值的 div。有些菜单项被禁用/不可点击,有些是。我通过使用 cursor 属性来区分它们。

如果禁用,我将它设置为 cursor:default,如果启用,我将它设置为 cursor:pointer 使用类。

现在,如果单击任何菜单,它必须等待一定的时间才能加载页面。那时,我希望整个菜单容器都有光标作为加载。所以我将 cursor:wait 添加到父级。不幸的是,它不起作用。

我也试过使用 !important 但没有成功。

如有任何帮助,我们将不胜感激。

setTimeout(function() {
  var el = document.getElementById("main");
  el.className += ' cursor-wait';
  alert(el.className);
}, 4000);
.container,
.container div {
  border: 1px solid black;
}
.cursor-default {
  cursor: default;
}
.cursor-point {
  cursor: pointer;
}
.container.cursor-wait {
  cursor: wait !important;
}
<div id="main" class="container">
  <div class="cursor-point">Menu1</div>
  <div class="cursor-default">Menu2</div>
  <div class="cursor-point">Menu3</div>
  <div class="cursor-default">Menu4</div>
  <div class="cursor-point">Menu5</div>
  <div class="cursor-point">Menu6</div>
  <div class="cursor-default">Menu7</div>
  <div class="cursor-point">Menu8</div>
  <div class="cursor-default">Menu9</div>
</div>

最佳答案

你的 CSS 是这样的:

.container .cursor-wait {
  cursor:wait !important;
}

它正在寻找一个名为 .cursor-wait inside 的元素来设置样式。

由于您是在同一个元素上添加两个类,因此您需要删除空格。此外,您想在已经设置光标的元素上覆盖光标 - 而不是在父元素上:

.container.cursor-wait div {
  cursor:wait !important;
}

编辑:根据您的评论:

can I have something in CSS that applies to all child elements, not just divs inside container

您可以使用通配符选择器(星号)修改您的代码:

.cursor-wait * {
  cursor:wait !important;
}

setTimeout(function() {
  var el = document.getElementById("main");
  el.className += ' cursor-wait';
  alert(el.className);
}, 4000);
.container,
.container div {
  border: 1px solid black;
}
.cursor-default {
  cursor: default;
}
.cursor-point {
  cursor: pointer;
}
.cursor-wait * {
  cursor: wait !important;
}
<div id="main" class="container">
  <div class="cursor-point">Menu1</div>
  <div class="cursor-default">Menu2</div>
  <div class="cursor-point">Menu3</div>
  <div class="cursor-default">Menu4</div>
  <div class="cursor-point">Menu5</div>
  <div class="cursor-point">Menu6</div>
  <div class="cursor-default">Menu7</div>
  <div class="cursor-point">Menu8</div>
  <div class="cursor-default">Menu9</div>
</div>

关于javascript - 从父元素到子元素覆盖游标值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431931/

相关文章:

jquery - AJAX 链接中的 SEO

jquery - 将页面内容推送到左浮动的 div 下方

javascript - 通过套接字发送 Canvas 元素,JS 中的最大堆栈大小

javascript - Angular JS 捕获服务器错误 Jsonp

javascript - jQuery 删除先前随机选择和显示的段落并重新显示随机选择的段落

javascript - 从 AJAX 调用返回和显示数据的最佳实践

javascript - 在页面加载时重新加载 gif 图像

javascript - 需要使用鼠标悬停而不是下拉菜单

javascript - 使用 jQuery 的类和值不为空的所有选择列表选项

html - 我在 html 中的输入不是从顶部开始的