10

たくさんのコードがあるので、ここには掲載しません。むしろ、ここですべてを見つけることができます。そうすれば、それをいじって実行することができます:

function P_Expand(item_id) {
  $('#p_' + item_id).slideToggle();
}
.data_table {
  width: 650px;
  margin-left: auto;
  margin-right: auto;
  border-collapse: collapse;
}
.data_table tbody th {
  border-bottom: 1px solid #555;
  text-align: left;
}
.data_table tbody tr td a {
  color: #8b9cb0;
  text-decoration: none;
}
.hidden_data {
  display: none;
  padding: 10px;
  font-style: italic;
  color: #777;
}
<table class='data_table'>
  <tbody>
    <tr>
      <td>
        <a href='javascript:void(0)' onclick='P_Expand(9)'>Drop me down!</a>
      </td>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <td colspan='3' style='background-color: #eee'>
        <div id='p_9' class='hidden_data'>
          <p style="margin: 0px;">Donec dolor urna, vehicula in elementum eget, auctor dignissim nibh. Morbi et augue et nisi.</p>
        </div>
      </td>
    </tr>
    <tr>
      <td>Line number 2...</td>
      <td>...</td>
      <td>...</td>
    </tr>
  </tbody>
</table>

問題は、「ドロップ ミー ダウン!」のときに発生します。リンクがクリックされます。DIV は予想どおり下にスライドしますが、最後に突然「ジャンプ」します。

なぜこれを行うのですか? どうすればそれをなくすことができますか?

4

3 に答える 3

23

実際には、これは必要ありません。非表示の要素に幅を与えるだけです:

.hidden_data {
    display: none;
    padding: 10px;
    font-style: italic;
    color: #777;
    width: 300px;
}

それはうまくいきます!

PS: 週末ずっとこれに費やした...

于 2010-08-24T04:58:32.153 に答える
12

デモ

コード リンク

.hidden_data {
    overflow: hidden;
    display:none; /* <--- remove this */
    padding: 10px;
    font-style: italic;
    color: #777;
}​

同様の問題が解決されました

于 2010-07-27T05:59:57.843 に答える
0

非表示の div に高さを設定します。jsfiddle


編集。ここでいくつかの答えを見つけました。各要素の高さを保存してから、再適用できます。あなたの状況には理想的ではありませんが、おそらく出発点です

于 2010-07-27T05:48:45.417 に答える