首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何阻止jQuery匹配多个元素

如何阻止jQuery匹配多个元素
EN

Stack Overflow用户
提问于 2009-07-23 08:39:27
回答 5查看 399关注 0票数 0

我正试图用jQUery创建一个滚转效果。然而,我也有类似的事情,因为我试图用一个有链接的对象做鼠标操作,我遇到了问题。

我有个二级导航吧。占位符的是表格单元格(我知道不好--但它已经这样做了)。我想把背景从白色(#FFF)改为深灰色(#999)。我也想把文字从深灰色改为白色。

因为文本是一个链接,所以我必须在链接标记中指定一个类,以确保它是深灰色的,没有下划线,并且不默认为蓝色的带下划线的文本。

我编写的代码导致class="subLink“的所有链接在”悬停“时从灰色变为白色。我只希望这种情况发生在特定的项目中--即背景应该变成灰色,链接应该变成白色。

HTML和jQuery如下:-

代码语言:javascript
运行
复制
<td class="subMenuTD"><a href="newsletter.html" class="subLink">Newsletter</a></td>
<td class="subMenuTD"><a href="news_archive.html" class="subLink">News Archive</a></td>
<td class="subMenuTD"><a href="events.html">Events</a></td>

代码语言:javascript
运行
复制
$(".subMenuTD").hover(
                  function() { 
                     $(this).addClass("subMenuTDActive");
                     $(".subLink").addClass("subLink-white");
                  },
                  function() {      
                     $(this).removeClass("subMenuTDActive");
                     $(".subLink").removeClass("subLink-white");
          }
               );
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-23 08:42:53

向$()函数添加上下文参数。

$(".subLink") --> $(".subLink", this)将使jQuery只匹配“.subLink”,后者是给定上下文元素的子元素。

票数 3
EN

Stack Overflow用户

发布于 2009-07-23 08:49:44

您可以通过不将类添加到链接中来简化这一点,因为您已经在将类添加到父td中,因此可以通过使用CSS来锁定链接:

代码在之前

代码语言:javascript
运行
复制
$(".subMenuTD").hover(                       
  function() {
     $(this).addClass("subMenuTDActive");                                
     $(".subLink").addClass("subLink-white");
  },
  function() {
     $(this).removeClass("subMenuTDActive");                                
     $(".subLink").removeClass("subLink-white");
  }
);

编码后的

代码语言:javascript
运行
复制
$(".subMenuTD").hover(                       
  function() {
     $(this).addClass("subMenuTDActive");     
  },
  function() {
     $(this).removeClass("subMenuTDActive");    
  }
);

新CSS规则

代码语言:javascript
运行
复制
.subMenuTDActive .subLink {
   /* Add hover link styling here */
}

这将起作用,因为".subMenuTDActive .subLink“比".subLink”具有更高的特异性,因此将覆盖".subLink“规则。

票数 2
EN

Stack Overflow用户

发布于 2009-07-23 09:10:35

我是干症组的。当你只使用css的时候,你到底为什么要使用javascript呢?

代码语言:javascript
运行
复制
 .subMenuTD:hover {
                   background-color: #ccc;
                   }

 .subLink:hover {
                 color: #fff;
                 }

或者更好的(我认为),去掉不应该并且应该删除的td元素的样式,将链接设置为display:block,然后可以在一个元素下面声明悬停样式:

代码语言:javascript
运行
复制
 .subLink {
          display: block;
          }

  .subLink:hover {
                 background-color: #ccc;
                 color: #fff;
                 }

除非您无法控制html,或者您有一些关键任务--依赖于保持不变的标记,“它已经在使用表了,我知道,起诉我”是一个非常糟糕的借口。这是你的子菜单,无纸桌:

代码语言:javascript
运行
复制
<ul class="subMenu">
<li><a href="newsletter.html">Newsletter</a></li>
<li><a href="news_archive.html">News Archive</a></li>
<li><a href="events.html">Events</a></li>
</ul>

大约花了30秒。下面是导航条/滚转的CSS:

代码语言:javascript
运行
复制
 .subMenu li {
          display: inline;
          list-style: none;
          }

  .subMenu a {
          color: #000;
          background-color: #fff;
          text-decoration: none;
          display: block;
          }

   .subMenu a:hover {
          color: #fff;
          background-color: #ccc;
          }

那可能花了一分钟时间,因为我得让它看起来很漂亮。

我不是想成为一个恶霸,也不是对你施加压力,但是非语义代码是不应该鼓励的,如果你在寻求帮助的话,我觉得给它不对,因为我知道它将被用于一个不符合标准的网站。

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

https://stackoverflow.com/questions/1170449

复制
相关文章

相似问题

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