当使用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方法回答了此问题。
答案 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>