次のようなテーブルがあります。
<table id="tblBranchCoverage" class="hideOnLoad" width="100%">
<tr class="coverageRow" style="cursor: pointer;">
<td class="countyCovered" width="115px">
<label class="branchCountyCovered coverageDisplay">Douglas</label>
<input type="text" class="edit editBox editCounty" style="display: none; width: 111px;" value="Douglas"><br>
<input type="submit" class="button edit submitCoverageEdits" style="display: none;" value="Save Changes"><br>
<input type="submit" class="button edit cancelCoverageEdits" style="display: none;" value="Cancel">
</td>
<td class="stateCovered" width="30px">
<label class="branchStateCovered coverageDisplay">GA</label>
<input type="text" class="edit editBox editState" style="display: none; width: 22px;" value="GA" max-length="2">
</td>
<td class="zipsCovered">
<label class="branchZipsCovered coverageDisplay">30122, 30133, 30134, 30135, 30154, 30187</label>
<textarea class="edit editBox editZips" style="display: none;" cols="100">30122, 30133, 30134, 30135, 30154, 30187</textarea>
</td>
</tr>
<tr class="coverageRow">
<td class="countyCovered" width="115px">
<label class="branchCountyCovered coverageDisplay">Forsyth</label>
<input type="text" class="edit editBox editCounty" style="display: none; width: 111px;" value="Forsyth"><br>
<input type="submit" class="button edit submitCoverageEdits" style="display: none;" value="Save Changes"><br>
<input type="submit" class="button edit cancelCoverageEdits" style="display: none;" value="Cancel">
</td>
<td class="stateCovered" width="30px">
<label class="branchStateCovered coverageDisplay">GA</label>
<input type="text" class="edit editBox editState" style="display: none; width: 22px;" value="GA" max-length="2">
</td>
<td class="zipsCovered">
<label class="branchZipsCovered coverageDisplay">30028, 30040, 30041</label>
<textarea class="edit editBox editZips" style="display: none;" cols="100">30028, 30040, 30041</textarea>
</td>
</tr>
</table>
テーブルの行を反復処理し、「編集」クラスの要素を持つ行を見つけます (最大で 1 つだけですが、すべての行にラベルが表示され、入力が非表示になる可能性があります)。 「表示:なし」に設定されています。その行が見つかったら、.edit 要素を非表示にしてラベルを表示する必要があります (その時点でスタイルは「display: none」に設定されます)。
私はこの文脈の中でこれをやっています:
$('#tblBranchCoverage').on('click', 'tr', function() {
したがって、基本的に、ユーザーが行をクリックすると、テーブル内の他のすべての行で .edit 要素が非表示になり、ラベルが表示され、クリックされた行の編集要素が表示され、ラベルが非表示になります。
私がそれを機能させるのに最も近いのはこれです:
$(this).parent().find('tr td').each(function() {
$(this).find('.edit').hide();
$(this).find('.coverageDisplay [style*="display: none"]').show();
});
$(this).find('.coverageDisplay').fadeOut(200);
$(this).find('.edit').delay(200).fadeIn(200);
});
クリックされた行はすべての要素を非表示にするため、これは実際には「閉じる」わけではありません。
私はこれを2時間いじっています。私は本当にいくつかの助けが大好きです!
ありがとう。
[編集] リクエストに応じて、ここにjsFiddleがあります。