イベントを含むこのテーブルがあり、そのアイコン (矢印) をクリックすると、新しい行 (子イベントと呼ばれます) が作成され、現在の行の下に追加されます。同じアイコンをクリックして子イベントを非表示にしたいのですが、彼だけです。現在、新しいイベント(別の行)をクリックすると、現在の行に関連していなくても、すべての非表示の行が切り替わります...
単純に、ある種のUntilNextを強制的に取得しようとしていますが、その機能を機能させることができません.atmを実行している単純なループでは、oneEventをスキップしますが、すべての子行をトリガーし、必要なものではありません.
$('.JSONArrow').on("click", function () {
var image = $(this);
var Row = image.closest("tr");
Row.toggleClass("Opened");
if (Row.hasClass("Opened")) {
image.attr("src", "/Images/downArrow.png")
if (!(Row.hasClass("alreadyOpen"))) {
var id = image.attr("id");
$.get("/Home/Child/" + id, function (data) {
Row.after(data);
Row.addClass("alreadyOpen");
});
}
} else {
image.attr("src", "/Images/rightArrow.png");
}
var tr = Row.nextAll('tr');
for (i = 0; i < tr.length; i++) {
var eventClass = $(tr[i]).attr('class');
if (eventClass == 'ChildEvent')
$(tr[i]).slideToggle()
else {
if (eventClass == 'oneEvent')
return;
}
}
});
子行でのみ動作するように nextUntil を作成するのは簡単なものでなければなりませんが、jquery docによると、これまでのところ管理していません。
var tr = Row.nextUntil('tr',$(".oneEvent"));
for (i = 0; i < tr.length; i++) {
var eventClass = $(tr[i]).attr('class');
if (eventClass == 'ChildEvent'){
$(tr[i]).slideToggle()
}
}
しかし、私はそれを機能させることができません。誰もがそれを行う方法を指摘するか、私が知らない別の jquery 関数を使用して、Row 変数にリンクされている (childEvent) すべて ('tr") を選択し、他の変数は選択しません。
aspまたはmvc4を知らない場合、人々がhthmlをもっと理解するかどうかはわかりませんが、ここに行きます:EDIT ::
<div class="TableHolder">
<table id="mainTable">
<thead>
<tr class="header">
<th class="iconColumn">Child</th>
<th>Date </th>
.... other <th>
</th>
</tr>
</thead>
@Html.EditorFor(x => x.logs)
</table>
そして、それは言うごとのテーブル行です:
string dynamicClass = "";
if (Model.Parent == null )
{
dynamicClass = "oneEvent";
}
else
{
dynamicClass = "ChildEvent";
}
}
<tr class="@dynamicClass">
<td class="iconColumn">
@if (Model.Parent == null )
{
<img class="JSONArrow" id="@Model.EventID" src="~/Images/rightArrow.png"/>
}
</td>
<td>@Model.TimeUTC.ToString("dddd, dd MMMM yyyy")<br />@Model.TimeUTC.ToString("HH:mm:ss") </td>
.... other column
</tr>
私が言及していることを単純化しようとします:
行があります。(Event) 行 (Event) をクリックすると、新しい動的行がその下に表示されます (ChildEvent と呼ばれます)。
行 (イベント) をもう一度クリックすると、その下に行が存在する場合は行が非表示になりますが、それは ChildEvent クラスの場合のみです。
私の現在のコードは、テーブル上のすべての ChildEvent を非表示にします。クリックされた (イベント) の下にあるものだけを非表示にしたいと考えています。
ユーザーが行 (イベント) をクリックして戻すと、存在する場合は (ChildEvent) が表示されますが、クリックされた行 (イベント) に関連する (childEvent) のみが表示され、テーブル全体の ChildEvent は表示されません。
childEvent は、関連する Event の下にのみ追加できます。
再編集:
row.nextUntil(".oneEvent", ".ChildEvent").slidetoggle();
これは私が望んでいることです。ChildEvent クラスがある場合は、クリックしたものの下にある tr を切り替えます。クラス「oneEvent」を持つtrに到達するまでテストします。
どのパラメーターがどこに行くのか理解できません。
再再編集:
<table>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
</table>
クリック時:
<table>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
</table>
同じ oneEvent をクリックします
<table>
<tr class="oneEvent, alreadyOpened"></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
</table>
新しい oneEvent をクリックします。
<table>
<tr class="oneEvent, alreadyOpened"></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
</table>
別の新しい oneEvent をクリックします
<table>
<tr class="oneEvent, alreadyOpened"></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=oneEvent></tr>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
前のイベントをクリックして戻します。
<table>
<tr class="oneEvent, alreadyOpened"></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=oneEvent></tr>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class="oneEvent, alreadyOpened"></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>
最初の OneEvent をクリックします。
<table>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class=oneEvent></tr>
<tr class="oneEvent, Opened, alreadyOpened"></tr>
<tr class=ChildEvent display = true></tr>
<tr class=ChildEvent display = true></tr>
<tr class="oneEvent, alreadyOpened"></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=ChildEvent display = false></tr>
<tr class=oneEvent></tr>
<tr class=oneEvent></tr>