0

我遇到了一个问题;我试图让所有其他DIVs 关闭并切换一个。我试图自己修复它,但我被卡住了。我希望有人能指出我做错了什么。

它没有在内部运行命令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>​
4

2 回答 2

4

您缺少 hide 函数上的 () ,需要说明您实际上正在调用它!

$(this).not($(this).closest('tr').next('tr.extra')).hide();
于 2012-08-30T00:41:21.923 回答
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
  });
}
于 2012-08-30T04:06:30.550 回答