在第二次选择时从列表中删除项目

时间:2015-11-12 04:51:19

标签: jquery list removeclass

我想首先从下拉列表中删除一个项目,但是在选择第二个项目之后,在下面的示例中,如果我选择option1将删除option1,但我需要选择option1(不会删除任何内容) ,同时选择option4(现在将删除选项1):

<select name="selectBox" class="sel" id="selectBox">
<option value="0">Select</option>
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

这是代码:

$(".sel").change(function () {
  var getVal = $(this).val();
  $("#selectBox option[value="+getVal+"]").remove();
});

Fiddle

2 个答案:

答案 0 :(得分:2)

如果您想删除以前选择的选项,请执行以下操作

var getVal;
$(".sel").change(function() {
  // checking previous value is defined or not
  if (getVal)
  // if defined removing the element
    $("#selectBox option[value=" + getVal + "]").remove();
  // updating selected option value to variable
  getVal = $(this).val();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="selectBox" class="sel" id="selectBox">
  <option value="0">Select</option>
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>
</select>

使用 :selected 选择器

更简单

var getVal;
$(".sel").change(function() {
  // removing previous selected option
  $(getVal).remove();
  // updating selected option object to variable
  getVal = $(':selected', this);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="selectBox" class="sel" id="selectBox">
  <option value="0">Select</option>
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>
</select>

更新:最初使用 change() 触发更改事件,以便在需要时获取默认值。

$(".sel").change(function() {
   //.............
}).change();
//--^--

答案 1 :(得分:0)

试试这种方式

var theValue;
$('.sel').focus(function () {
    theValue = $(this).attr('value');
});

$(".sel").change(function () {
    $('.sel option[value=' + theValue + ']').remove();
    theValue = $(this).attr('value');
});

DEMO