如何使用 jQuery 更改 NEXT 项目的背景?

Posted

技术标签:

【中文标题】如何使用 jQuery 更改 NEXT 项目的背景?【英文标题】:How can I change the background of NEXT item with jQuery? 【发布时间】:2013-01-10 14:39:09 【问题描述】:

我有以下方法,但我无法使其工作。我想在鼠标悬停时删除以下 li-tag 的背景。

我的代码:

<div id="mainmenu">
  <ul>
          <li><a href="index.php?id=2"  >Das Hotel</a></li>
          <li><a href="index.php?id=3"  >Angebote</a></li>
          <li><a href="index.php?id=4"  >Reservierung</a></li>
          <li><a href="index.php?id=5"  >Kontakt</a></li>
          <li><a href="index.php?id=6"  >Anfahrt</a></li>
          <li><a href="index.php?id=7"  >Rechtliches</a></li>
          <li><a href="index.php?id=8"  >Impressum</a></li>
  </ul>
</div>

jQuery:

$("#mainmenu ul li a").hover(function() 
$(this).parent().next().find("li").css('background', 'none');

这里是小提琴:

http://jsfiddle.net/bQxJu/2/

【问题讨论】:

$(this).parent() 是一个li。所以$(this).parent().next().find("li") 不会找到任何东西。 还认为您需要将其更改回来,一旦悬停离开。 【参考方案1】:

http://jsfiddle.net/bQxJu/6/

JS 有错误,所以我必须修复它。我还添加了一个“鼠标移出”事件处理程序来放回背景。此外,您将 LI 的 BG 设置为“无”,但您的 CSS 在锚点上有背景,而不是 li。

这是 JS:

$("#mainmenu ul li a").hover(function () 
   $(this).closest('li').next().find("a").css('background', 'none');
, function () 
   $(this).closest('li').next().find("a").css('background', '');
);

【讨论】:

感谢您的快速回复。我现在完全按照您在此处编写的操作并将其与 Fiddle 进行了比较,但在我的页面上它仍然无法正常工作:vorschau9.mierau.de 这怎么可能?鼠标悬停时下一个 li 上的分隔线图形应该被隐藏.. 您遇到了 javascript 错误。您正在访问 jquery 的 $,但看起来 $ 不存在,当 jQuery 在“无冲突”模式下运行时就是这种情况。如果您将$(window) 更改为jQuery(window),您将看到JS 错误消失(尽管由于$,悬停方法仍然会失败)。我不确定为什么你的 jquery 库被设置为 noConflict 模式,但那是我的预感。【参考方案2】:
$("#mainmenu ul li a").hover(function () 
  $(this).parent().next('li').find('a').css('background', 'none');
, function () 
  $(this).parent().next('li').find('a').css('background', '');
);

【讨论】:

以上是关于如何使用 jQuery 更改 NEXT 项目的背景?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 动画更改背景图像?

如何使用jquery更改css块的背景图像[重复]

加载脚本时如何在jquery中选中一个框时更改背景

如何更改 jQuery UI 对话框的背景颜色?

如何在 Rails 中从 JQuery 更改 CSS(背景图像)?

JQuery 更改 ASP:GridView 行的背景颜色