jquery的css选择器帮助

jquery的css选择器帮助,jquery,css,Jquery,Css,我有一个wordpress博客,它有很多页面和子页面,这些子页面可以在悬停状态下下拉。。。。问题是,我不想让你悬停的页面链接到任何东西,除非它们没有任何ul,里面有许多锚,所以只有子页面会有一个不同于“#”的href 所以基本上我用一些简单的javascript来破解这个问题 jQuery(document).ready(function(){ jQuery("#menus li > a").attr("href","#"); }); 这是选择每一个。。我不想那样。。。我只

我有一个wordpress博客,它有很多页面和子页面,这些子页面可以在悬停状态下下拉。。。。问题是,我不想让你悬停的页面链接到任何东西,除非它们没有任何ul,里面有许多锚,所以只有子页面会有一个不同于“#”的href 所以基本上我用一些简单的javascript来破解这个问题

   jQuery(document).ready(function(){
   jQuery("#menus li > a").attr("href","#");
 });
这是选择每一个。。我不想那样。。。我只希望锚是主页,而不是子页面。。。这是html,也许你可以想一个更好的方法来选择它

我先解释一下

结构是 一个包含许多li的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>
  • //href应改为#
  • //href不应更改
  • //href应改为#
试试看


这应该满足您的要求:

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

不管我在回答中说了什么。我没有正确理解你的问题。Reigel是绝对正确的。`如果li中没有ul,那么li a应该保留其href。
,因此,我的方法是找到ul。。。然后更改
的href。。。如果没有ul,
`的href保持不变…使用非标准选择器,如
:not
:has
,等等。。。很慢。。。尽量不要使用它们……我知道会有开销,但我觉得这并不比像其他答案一样上下遍历DOM慢多少?如果我错了,请纠正我。。。
jQuery(document).ready(function(){
   jQuery("#menus li:has(ul) > a").attr("href","#");
}