条件选择

时间:2010-03-02 09:35:57

标签: jquery jquery-selectors

我正在努力尝试并且无法使其发挥作用。我有一个ul class =“first”。从模板中的所有ul的“第一个”开始,我只需要选择那些包含ul class =“second”的选项,并选择将h2 href改为“#”。问题是,当我发现这个具有“第二”的特定“第一”时,我可以毫无问题地改变“第二”参数,但我无法想象如何影响“第一”。

这里是js和html的链接: http://jsbin.com/acoqi/edit

HTML:

<ul id="Menu">
<li>
  <span id="primary">
      <h1>
          <a href="#">Bags</a>
      </h1>
  </span>
  <ul class="first">
      <li>
          <span id="secondary">
              <h2>
                  <a href="/category/category/bags_/">Bags</a>
              </h2>
          </span>
          <ul class="second">
              <li>
                  <h3>
                      <a href="/category/category/shoulderbag/">Shoulder Bags</a>
                  </h3>
              </li>
          </ul>
      </li>
      <li>
        ...
      </li>
  </ul>
</li>
<li>
  <ul class="first">
     <li>        
          <span id="secondary">
              <h2>
                  <a href="/category/category/bags_/">Bags</a>
              </h2>
          </span>          
    </li>
  </ul>

JS:

    var second = $(".second");
    if(second.length && second.closest(".first")) {
       $(".first h2 a").attr("href", "#");
    };

1 个答案:

答案 0 :(得分:3)

我认为你正在寻找:有选择器

$('ul.first:has(ul.second) h2 a').attr("href", "#");

或者,更接近你正在做的事情:

var second = $(".second");
if(second.length && second.closest(".first")) {
   second.closest(".first").find("h2 a").attr("href", "#");
};