selectedIndex更改后触发onChange事件?

时间:2010-11-01 15:58:27

标签: jquery onchange selectedindex

当使用jQuery设置selectedIndex或val时,是否可以在选择字段上触发更改事件?

我已经尝试过它似乎不起作用。我试图用我自己的设计替换一个选择字段。问题是如果我将更改事件附加到选择字段,当索引更改时,它需要触发该事件。

有办法做到这一点吗?

var a = $("a");

$("a").on("click", function() {
  
  $("#selectList")[0].selectedIndex = a.index($(this));
  
    //now fire event

	return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Trigger 1</a>
<a href="#">Trigger 2</a>
<a href="#">Trigger 3</a>

<select id="selectList">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

编辑: @ xSaint32使用jQuery's trigger方法回答了此问题。

1 个答案:

答案 0 :(得分:2)

@ xSaint32使用jQuery's trigger方法回答了这个问题。

var a = $("a"),
    select = $("#selectList");

$("a").on("click", function() {
  
  select[0].selectedIndex = a.index($(this));
  
  select.trigger( "change" );

  return false;
});

select.on("change", function() {
  
  alert("My index changed");

  return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Trigger 1</a>
<a href="#">Trigger 2</a>
<a href="#">Trigger 3</a>

<select id="selectList">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>