帮助jquery的css选择器

时间:2010-06-02 04:17:07

标签: jquery css

我有这个wordpress博客,有很多页面都有子页面,可以在悬停时下拉....事情是,我不希望你悬停的页面链接到任何东西,除非他们没有任何带有许多锚点的内部所以只是子页面的href与“#”不同 所以基本上我用一些简单的javascript来破解我的方式。

   jQuery(document).ready(function(){
   jQuery("#menus li > a").attr("href","#");
 });

这是选择每一个...而我不想要...我只是想要主页的锚点,而不是子页面...继承人html所以也许你可以想出一个更好的方法来选择它。 / p>

首先解释

结构是 一个有许多李的ul,里面有一个锚 如果li里面还有一个ul那么那些是将在悬停时出现的子页面。 因此初始锚应该有href =“#” 如果li里面没有ul那么li a应该保留它的href。

    <ul id="menus">
      <li>
        <a href="somelink">Main Page</a> //href should be changed to #
        <ul>
            <li>
              <a href="somelink2/">Subpage1</a>
            </li>
            <li>
              <a href="somelink3">Subpage2</a>
            </li>
        </ul>
      </li>
      <li>
        <a href="somelink">MainPage-with-no-subpages</a> //href should not be changed
      </li>
      <li>
        <a href="somelink4">MainPage</a> //href should be changed to #
        <ul>
          <li>
            <a href="somelink5">Subpage</a>
          </li>
          <li>
            <a href="somelink6">Subpage</a>
          </li>
        </ul>
      </li>
</ul>

2 个答案:

答案 0 :(得分:2)

尝试

jQuery(document).ready(function(){
   jQuery("#menus li > ul").siblings('a').attr("href","#");
});

答案 1 :(得分:0)

这应该做你想要的:

jQuery(document).ready(function(){
   jQuery("#menus li:has(ul) > a").attr("href","#");
}