2012-04-24 83 views
0

我有使用jQuery切換的問題。當我對某些標籤使用相同的類名時,我只想單擊按鈕即可獲得一個事件。切換具有相同的類名

我的一些代碼位於下方,如果點擊名爲'1'的按鈕,它將顯示'2'和'5'的行,因爲它們具有相同的類名'detail'。然而,如果我點擊'1',我想只顯示'2'的行。

我不願意使用不同的名稱,因爲它應該有很多具有切換功能的行。這意味着我需要爲每個標籤提供許多名稱。

請幫助我一些解決方案和建議,謝謝。

---腳本----

<script> 
      $(".button").click(function() { 
       $(".detail").slideToggle("slow"); 
      }); 
      $(".button2").click(function() { 
       $(".detail2").slideToggle("slow"); 
      }); 
    </script> 

--- HTML -----

<table class="w850 table"> 
     <tr> 
      <td class="w50"> 
       <input type="checkbox" /> 
      </td> 
      <td class="w50"> 
       <input type="button" value="1" class="button"/> 
      </td> 
      <td class="w250"> 
       Scan 
      </td> 
      <td class="w250"> 
       Status 
      </td> 
      <td class="w250"> 
       Ship Type 
      </td> 
     </tr> 
     <tr class="detail" style="display: none"> 
      <td class="w50"> 
       <input type="checkbox" /> 
      </td> 
      <td class="w50"> 
       <input type="button" value="2" class="button2"/> 
      </td> 
      <td class="w250"> 
       Scan 
      </td> 
      <td class="w250"> 
       Status 
      </td> 
      <td class="w250"> 
       Ship Type 
      </td> 
     </tr> 
     <tr class="detail2" style="display: none"> 
      <td class="w50"> 
       <input type="checkbox" /> 
      </td> 
      <td class="w50"> 
       <input type="button" value="3" /> 
      </td> 
      <td class="w250"> 
       Scan 
      </td> 
      <td class="w250"> 
       Status 
      </td> 
      <td class="w250"> 
       Ship Type 
      </td> 
     </tr> 
     <tr> 
      <td class="w50"> 
       <input type="checkbox" /> 
      </td> 
      <td class="w50"> 
       <input type="button" value="4" class="button"/> 
      </td> 
      <td class="w250"> 
       Scan 
      </td> 
      <td class="w250"> 
       Status 
      </td> 
      <td class="w250"> 
       Ship Type 
      </td> 
     </tr> 
     <tr class="detail" style="display: none"> 
      <td class="w50"> 
       <input type="checkbox" /> 
      </td> 
      <td class="w50"> 
       <input type="button" value="5" class="button2"/> 
      </td> 
      <td class="w250"> 
       Scan 
      </td> 
      <td class="w250"> 
       Status 
      </td> 
      <td class="w250"> 
       Ship Type 
      </td> 
     </tr> 
     <tr class="detail2" style="display: none"> 
      <td class="w50"> 
       <input type="checkbox" /> 
      </td> 
      <td class="w50"> 
       <input type="button" value="6" /> 
      </td> 
      <td class="w250"> 
       Scan 
      </td> 
      <td class="w250"> 
       Status 
      </td> 
      <td class="w250"> 
       Ship Type 
      </td> 
     </tr> 
    </table> 

回答

1
$(".button").click(function() { 
    $(this).closest("tr").siblings(".detail:first").slideToggle("slow"); 
}); 
$(".button2").click(function() { 
    $(this).closest("tr").siblings(".detail2:first").slideToggle("slow"); 
}); 

這將選擇第一排.detail

你可以在這裏看看http://jsfiddle.net/4KP9Y/2/工作代碼

+0

謝謝,但是當我點擊'1'時它仍然顯示'2'和'4'。 – user1354470 2012-04-24 19:41:26

+0

我更新了code.missing屬性 – 2012-04-24 19:44:28

+0

謝謝,但它沒有奏效。不管怎麼說,還是要謝謝你。 – user1354470 2012-04-24 21:13:30

0

如果你的按鈕在行裏找到你也許可以做這樣的事情:

$(".button").click(function() { 
    $(this).closest("tr").siblings(".detail2").show() 
}); 

你可能想看看jQuery的功能遍歷DOM。意思是從這裏到達那裏:http://api.jquery.com/category/traversing/

+0

謝謝,但是當我點擊按鈕'1'時,它會顯示'2'。並點擊'2',它會顯示'3'。所以你提供給我的代碼應該是「.detail」而不是「.detail2」,不是嗎?對不起,給了一個困惑。 我已更改代碼並嘗試過,但仍顯示'2'和'4'兩行... – user1354470 2012-04-24 19:15:30

+0

正如其他人所說不知道按鈕在您的頁面上顯示的位置,很難找出它們與每一行之間的關係。我仍然認爲了解遍歷可能會幫助您找到解決方案。 – 2012-04-24 19:20:36

+0

我明白了。我也嘗試找到一個解決方案。不管怎樣,謝謝你。 – user1354470 2012-04-24 19:38:39