2012-08-30 206 views
0

我碰到一個問題;我試圖讓所有其他DIV s關閉並切換一個。 我試圖自己修復它,但我卡住了。我希望有人能指出我做錯了什麼。jQuery不隱藏其他DIV

這不是not(...)內部運行的命令:

$(document).ready(function() { 
    $('.extralink').click(function() { 
    $(this).closest('tr').next('tr.extra').toggle(); 

    $(this).not($(this).closest('tr').next('tr.extra')).hide; 
    }); 
} 

HTML

<table class="avs" border="1" width="384px"> 
     <tr class="avs"> 
      <th>Avatar name</th> 
      <th >Position</th> 
     </tr> 
     <tr class='avs'> 
      <td> 
       <a class='extralink' href="#"></a> 
      </td> 
      <td></td> 
     </tr> 
     <tr class='extra'> 
      <td colspan='2' > 
       <div> 
        <div>info</div> 
        <div>image</div> 
       </div> 
      </td> 
     </tr> 
<tr class='avs'> 
     <td> 
      <a class='extralink' href="#"></a> 
     </td> 
     <td></td> 
    </tr> 
    <tr class='extra'> 
     <td colspan='2' > 
      <div> 
       <div>info</div> 
       <div>image</div> 
      </div> 
     </td> 
    </tr> 
    </table>​ 
+0

你可以張貼HTML?另一個問題是,你隱藏的「$(this)」不是「下一個最接近的額外tr ......這意味着你要隱藏你點擊的元素。 – bokonic

回答

0

如果你展示更多的HTML,它會有所幫助。但這裏有一些指針來幫助你

$(document).ready(function() { 
    $('.extralink').click(function() { 
    // should cache the tr 
    $(this).closest('tr').next('tr.extra').toggle();  
    $(this).not($(this).closest('tr').next('tr.extra')).hide; //<--missing() 
    // usually not() isn't used with this - as anything with this is usually used inside not() to filter out 
    }); 
} 

因此,像這樣會更好看

$(document).ready(function() { 
    $('.extralink').click(function() { 
    var $tr = $(this).closest('tr').next('tr.extra'); 
    $tr.toggle();  
    $('tr.extra').not($tr).hide(); // <-- I'm guessing this is correct 
    // since it's these tr's you are looking for to toggle 
    }); 
} 
+0

謝謝你,:) :) –

+0

然後接受他的答案,並upvote它。 – Yatrix

4

你錯過了()的隱藏功能,這是需要說你實際上是調用它!

$(this).not($(this).closest('tr').next('tr.extra')).hide();