私の見解では、Select2、空白のul
要素、および隠されたListBox要素を使用するドロップダウンリストがあります。 Listbox要素は、サーバーに送信される要素です。今jQuery DropDownListから項目を削除する
<div class="form-group">
@Html.Label("Grade", new { @class = "control-label col-md-2" })
<div class="col-md-5">
@Html.DropDownList("IPGrade", null, "-- Select a Grade --", new { id = "Grade-DDL", @class = "form-control" })
</div>
<div class="col-md-3">
<ul id="Grade-List" class="list-group"></ul>
</div>
</div>
@Html.ListBoxFor(model => model.LstGrades, new List<SelectListItem>(), new { id = "Grades-ListBox", @class = "form-control" })
ユーザはドロップダウンリストからオプションを選択したとき、その値はul
要素とjQueryを介してリストボックス要素に取り込まれています。要素がul
要素に追加されている場合、ユーザーがul
とリストボックスから項目を削除できるようにするbtn
も作成しています。ここに問題がある。
ユーザーがドロップダウンリストには、彼らが選択したしかし、何度も同じオプションを選択する能力を持っているので、彼らは、ドロップダウンリストからOption 1
を選択した場合3回は...その後、ul
要素やリストボックス要素はOption 1
3回を持っています。しかし、ユーザーがOption 1
を何度も選択して、ul
から1つを削除したい場合は、2が残っているので、問題がどこにあるのかがわかります。
ユーザーがul
要素で繰り返されるオプションを削除しようとすると、削除をクリックすると、繰り返されているものと同じオプションがすべて削除されます。したがって、上記の例では、ユーザがOption 1
のいずれかを削除しようとした場合、3つすべてが削除されますOption 1
。
ここは私のjQueryです。 ULの項目とリストボックス
$("#Grade-DDL").on("select2:select",
function(evt) {
console.log(evt.params);
$("#Grade-List").append("<li class='list-group-item' data-id='" +
evt.params.data.id +
"' >" +
evt.params.data.text +
" <input type='button' class='btn btn-default btn-xs remove-button' style='float: right; margin-top: -2%;' value='x' /></li>");
$("#Grades-ListBox")
.append("<option selected='true' value='" +
evt.params.data.id +
"'>" +
evt.params.data.text +
"</option>");
$("#Grade-DDL").val("").change();
});
ULから項目を削除し、リストボックスを追加
function removeGradeCapability() {
$("#Grade-List").on("click",
".remove-button",
function() {
//alert($(this).parent().text());
//alert($(this).parent().data("id"));
var elementId = $(this).parent().data("id");
$("#Grades-ListBox option[value='" + elementId + "']").remove(); // remove item from listbox
$(this).parent().remove(); // remove item from ul element
});
}
目標
ユーザーのみであること、その1つのオプションを削除それを選択してもオプションはul
要素で繰り返されます...
何か助けていただければ幸いです。フィドル
更新
はここに正確に私の問題が何であるかのレプリカです!
'' '' '' '' Grades-ListBoxオプション[値= '"+ elementId +"'] ")' –
@CarstenLøvboAndersen申し訳ありませんが編集されました –
'$ ).find( "。list-group-item")。data( "id") ' –