2013-05-01 76 views
1

在下面的代碼我希望看到的紅色,藍色,綠色和棕色行顯示,但它似乎所有的行,除了紅,被隱藏彷彿nextUntil參數將被忽略。任何線索?謝謝。出現nextUntil參數被忽略

經過一番研究,我都嘗試

$("#firstrow").nextUntil('span[class="hues"]').hide(); 

$("#firstrow").nextUntil('span:not(.colors)').hide(); 

的HTML:

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"/> 
     <script> 
      $(document).ready(function() { 
       $("#firstrow").nextUntil('span[class="hues"]').hide(); 
       //$("#firstrow").nextUntil('span:not(.colors)').hide();    
      }); 
     </script> 
    </head> 
    <body> 
     <table id="colortable"> 
      <tr id="firstrow"> 
       <span class="colors">Red</span> 
      </tr> 
      <tr> 
       <span class="colors">Orange</span> 
      </tr> 
      <tr> 
       <span class="hues">Blue</span> 
      </tr> 
      <tr> 
       <span class="shades">Green</span> 
      </tr> 
      <tr> 
       <span class="colors">Brown</span> 
      </tr> 
     </table> 
    </body> 
</html> 
+0

'.nextUntil()'搜索的兄弟姐妹,你的跨度是不是'#firstrow'的兄弟姐妹。 – j08691 2013-05-01 16:08:50

+3

另外,你的HTML是* *可怕打破:一'tr'只能有'th'和'td'子元素。其他任何東西,比如'span'都應該包含在其中一個元素中。 – 2013-05-01 16:13:21

+0

大衛托馬斯 - 是啊,我知道更好,但在急於得到這個貼不知何故,我省略了TD的。我的測試文件包含td,但具有相同的問題。謝謝。 – gcarterIT 2013-05-08 19:13:30

回答

1

您的標記是無效的,tr元素應該只有td子元素。

<table id="colortable"> 
    <tbody> 
     <tr id="firstrow"> 
      <td> 
       <span class="colors">Red</span> 
      </td> 
     </tr> 
     ... 
    </tbody> 
</table> 

跨度元素不是所選元素的兄弟姐妹,nextUntil僅過濾所選元素的下一個兄弟元素,你應該選擇具有特定跨度元素tr

// Select the all next sibling elements until the first element that matches the selector 
$("#firstrow").nextUntil('tr:has(span.hues)').hide(); 

http://jsfiddle.net/KDKeF/

如果要選擇與選擇器匹配的所有下一個兄弟元素,可以使用nextAll方法:

// Select the all next sibling elements that match the selector 
$("#firstrow").nextAll('tr:has(span.hues)').hide(); 
+0

未定義 - ,增加了更多的澄清;因爲#firstrow是一個tr,我認爲所有兄弟姐妹都是trs是隱含的,但顯然我需要具體說明跨度與兄弟tr的關係。你在jsfiddle上的例子是一個很大的幫助。謝謝。我會更多地研究這一點。 – gcarterIT 2013-05-08 19:24:30