心に留めておいてください、私はクライアント側のスクリプトを作成するのが初めてで、自分の道を学んでいます..
表形式のデータを含むページを作成し、ユーザーが特定のリンクをクリックしてモーダル ポップアップを表示し、リクエストを送信できるようにする必要があります。
このフォームを DIV に配置し、jQuery を使用して表示しますが、問題ありません。「テーブル」については、クリックとデータを最適な方法で接続する方法についてジレンマがあります。私はクラスでそれを行う傾向がありますが、私の HTML は次のようになります。
<ItemTemplate>
<tr>
<td class="tripId"><%# DataBinder.Eval(Container.DataItem, "TripId")%></td>
<td class="pickupDate"><%# DataBinder.Eval(Container.DataItem, "PickupDate", "{0:MM/dd/yy}")%></td>
<td class="from"><%# DataBinder.Eval(Container.DataItem, "FromCity")%>, <%# DataBinder.Eval(Container.DataItem, "FromState")%></td>
<td class="deliveryDate"><%# DataBinder.Eval(Container.DataItem, "DeliveryDate", "{0:MM/dd/yy}")%></td>
<td class="to"><%# DataBinder.Eval(Container.DataItem, "ToCity")%>, <%# DataBinder.Eval(Container.DataItem, "ToState")%></td>
<td class="weight"><%# DataBinder.Eval(Container.DataItem, "Weight")%></td>
<td><%# DataBinder.Eval(Container.DataItem, "LoadedMiles")%></td>
<td><%# DataBinder.Eval(Container.DataItem, "RequiredEquipment")%></td>
<td><a href="#" class="inquireLink"><strong>Inquire now</strong></a></td>
</tr>
</ItemTemplate>
JavaScript では、次のようにすべての href にフックします。
// Hookup link events to handle modal popup
$(".inquireLink").on("click", function (event) {
event.preventDefault();
inquireAboutTrip($(this));
});
function inquireAboutTrip($link) {
// Link located on <TR> so we can traverse up and then into each cell to get data
}
したがって、リンクから TR までトラバースし、各 CLASS から TD 内のデータを見つけることができます。次に、必要に応じてこのデータをフォームで使用できます。2 つの問題があります: VS2012 は、これらすべてのクラスが未定義であると不平を言います (もちろん、それらは CSS にはありません)。別の問題は、行ごとにこのマークアップの繰り返しがあることです..もっときれいにしたいです。jQuery を使用すると、TR 内の TD の順序に依存できることを理解しています。コードはより脆弱になりますが、HTML は少なくなります。
このような問題を解決する一般的な方法は何ですか?