web-dev-qa-db-ja.com

.chosen.change()-選択アクションか選択解除アクションかを判別する方法

コンポーネントでトリガーされた変更イベントが選択の結果なのか選択解除の結果なのかをどのように判断できますか?選択した値のみまたは選択解除した値のみの値を取得するにはどうすればよいですか?

$("#airports-select-2").chosen().change(function(event) {
    console.log('select2 change', event, $(event.target).val());
});

このコードは、複数選択コンポーネントでこれまでに選択されたすべての値を提供しますか?これを変更して、新しく選択または選択解除されたコンポーネントの値のみを取得するにはどうすればよいですか?

18
oneiros

イベントが発生するたびにトリガーできます。

var  target = $(event.target),
     priorDataSet = target.data("chosen-values"),
     currentDataSet = target.val();

//Diff and compare the delta here.    

target.data("chosen-values", currentDataSet);

DOM要素のデータを更新する前に、diffを実行して、値セット間のデルタを判別できます。古いもので新しいものではない場合は削除されます。新しいもので古いものではない場合は、追加されます。

2つのアレイ間のデルタを決定する方法の例が必要な場合は、私に知らせてください。そのための例も作成します。

3
VulgarBinary

選択済み ドキュメント

選択すると、選択が行われるたびに標準のDOMイベントがトリガーされます(selectedまたはdeselectedパラメータが変更されたオプションを通知します)。

  $('select').on('change', function(event, params) {
    // can now use params.selected and params.deselected
  });
38
Evgeny

選択したドキュメントは トリガーされたイベント について説明しています

「search-choice-close」のイベントをキャッチするには、次のことを試してください。

 $('#selectID').on('change', function(change, deselected) { //selected OR deselected
    //do something
    console.log('Value Deselected');
  });
0
Tanmay D