現在の要素の後のすべての要素を削除することについて質問があります。
シナリオは次のとおりです。
特定の値に到達するためにユーザーが通り抜ける必要のあるロケーションツリーがあります。ajaxを介してトップレベルの場所をロードするSELECTがあります。選択を絞り込むためにデータの値がより細かく設定されているため、ユーザーが選択した内容に応じて新しいSELECTを追加します。ユーザーがデータで使用可能なオプションの最後に到達したら、SELECTの追加を停止し、最後のオプションの値を取得します。これが私が求めているものです。
これをコーディングする方法は、最上位のロケーションIDが組み込まれている1つのSELECTから開始し、次にデータベースに送信されてその選択のために子を取得する「onchange」イベントハンドラーを持ち、新しい現在のTD内で選択します。
これは、最後の選択で子が返されなくなるまで続きます。その時点で、この最終的な場所のIDを取得できます。
これは、ユーザーが1つまたは2つの「アップストリーム」を選択するものを変更することを決定するまではうまく機能します。
これは、ロケーションツリーを取得したユーザーが持つ可能性のあるものの図です(これらはコード内のSELECTです)。
アメリカ->オハイオ->カイヤホガ->クリーブランド->第1地区
'District 1'がこの場所のチェーンで最後に利用可能なアイテムであった場合、$('#locations select:last')。val()を使用して取得できます。ワンダーバー。
うまく機能しないのは、ユーザーが「うーん、私が求めているのはCuyahogaではなく、Stow」と判断し、3番目の選択オプションを変更した場合です。私がする必要があるのは、「Cuyahoga」を持つ選択の後にすべての選択を削除することです。これは、「Stow」のデータをさらにフェッチする必要があるためです。前の選択の後の選択は無効になります。
操作されているselectは、onchangeイベントでそれ自体を渡すため、現在の要素があります。$(elem).after()。remove()を試しましたが、機能しません。
現在のSELECTの後にすべてのSELECTを削除する方法についてのアイデアはありますか?
ありがとう!
ドキュメントの構造は次のようになります。
<table border id="loctable">
<tr><th>Location:</th><td><select id="loc0" onchange="return UpdateLocationSelect(this);">
<option>choose..</option>
<option value="3">USA</option>
</select>
</td>
</tr>
[をちょきちょきと切る]
function UpdateLocationSelect(elem) {
// load sub locations for PPID given. IN this case, locations under USA. add options to elem
// Also, erase any selects after this one, in case the user has "backed up" his selection
$(elem).next().remove(); // Help needed here!! how to remove any SELECTs after this one??
$.ajax({
url: "api.php",
dataType: "json",
data: { cmd: "sublocs", "pid": elem.value },
async: false,
success: function( data, textStatus ) {
// results
if( $(data).length ) {
$('#loctable td').append( "<select onchange='return UpdateLocationSelect(this);'><option>choose..</option></select>");
$.each( data, function( key, val ){
$('#loctable select:last').append( '<option value="'+key+'">'+val+'</option>' );
});
}
else
{
// we've hit the end of this location branch. Alert to check val is right
alert( "LocID: " + $('#loctable select:last').val() );
}
},
});
return false;
}