1

当使用 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 的触发方法回答了这个问题。

4

1 回答 1

3

@xSaint32 通过使用jQuery 的触发方法回答了这个问题。

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>

于 2011-07-01T10:08:48.593 回答