jquery - 悬停时 li 元素上的嵌套 css 样式

标签 jquery html css css-selectors

<分区>

我有这样的标记。

<div id="chromemenu" class="chromestyle">
  <ul>
    <li><a rel="dropmenu1" href="#" class="">Buy</a></li>
    <li><a rel="dropmenu2" href="#" class="">Sell</a></li>
    <li><a rel="dropmenu3" href="#" class="">Community</a></li>
    <li><a rel="dropmenu6" href="#" class="">Languages</a></li>
    <li><a rel="dropmenu4" href="#" class="">My Account</a></li>
  </ul>
</div>

现在我已经使用 jQuery 在选定的类中添加一个类。因此,当用户将鼠标悬停在链接上(此处为购买链接)时,标记会变成这样

<div id="chromemenu" class="chromestyle">
  <ul>
    <li><a rel="dropmenu1" href="#" class="selected">Buy</a></li>
    <li><a rel="dropmenu2" href="#" class="">Sell</a></li>
    <li><a rel="dropmenu3" href="#" class="">Community</a></li>
    <li><a rel="dropmenu6" href="#" class="">Languages</a></li>
    <li><a rel="dropmenu4" href="#" class="">My Account</a></li>
  </ul>
</div>

现在我只想给选择了类的 li 赋予样式。 我对 li 的风格是只给 li 元素加上边框。那么有人可以告诉我该怎么做吗?任何帮助和建议都将非常感激。谢谢....

更新 我想给我的 li 元素添加边框,而不是 a 所以请在那个领域帮助我。这可以用简单的 css 实现吗?嘿,我还在为答案...

最佳答案

当您根据其后代的类名设置元素的父级样式时:

$('a.selected').closest('li').css('border-top','1px solid #000');

JS Fiddle demo .

或者,稍微好一点,因为它删除了边框(假设这可能用于鼠标悬停/鼠标悬停):

$('a.selected').closest('li').hover(function(){
    $(this).css('border-top','1px solid #000');
},function(){
    $(this).css('border-top-width','0');
});

JS Fiddle demo .

样式的纯 JavaScript 选项:

var selected = document.querySelector('a.selected');
selected.parentNode.style.borderTop = '1px solid #000';

JS Fiddle demo .

var selected = document.getElementsByClassName('selected')[0];
selected.parentNode.style.borderTop = '1px solid #000';

JS Fiddle demo .

一个改进的替代方案,使用 jQuery 的 hover() 方法和 addClass() 而不是直接操作元素的内联样式:

$('a.selected').closest('li').hover(function(){
    $(this).addClass('activeParent');
},function(){
    $(this).removeClass('activeParent');
});

以及以下 CSS:

li {
    /* to prevent jumping down of the li when the border is shown */
    border-top: 1px solid transparent;
}
.activeParent {
    border-top-color: #000;
}

JS Fiddle demo .

关于jquery - 悬停时 li 元素上的嵌套 css 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15269407/

相关文章:

html - CSS - 链接排列不正确

html - 使用 bootstrap row 和 col 的推拉在网页上订购内容

css - 为什么 VW 装置不能在容器上产生居中结果?

javascript - 如何检索 Summernote 的内容?

jquery - 关于 Canvas 调整大小的 HTML/Jquery 问题 - $(window).resize 与 $(window).load/$(document).ready

html - 使用 HTML5 和 CSS3 根据屏幕分辨率调整正文大小

javascript - Firefox 43 似乎破坏了 W3C (navigator.geolocation) 定位服务

javascript - 模糊不起作用后单击

Jquery获取Radio Button添加的属性值

css - Angular 7 根据 JSON 列表中的值更改文本颜色