如果选择列表被js隐藏和设置,我试图检测选择列表更改。
我的代码在这里:JsFiddle
<select onchange="myfunction()" style="display:none">
<option value="0">zero</option>
<option value="1">one</option>
<option value="2">two</option>
</select>
<button class=z>zero</button>
<button class=o>one</button>
<button class=t>two</button>
$('select').change(function() {
alert("ok");
});
$('.z').click(function() {
$("select").val('0');
});
$('.o').click(function() {
$("select").val('1');
});
$('.t').click(function() {
$("select").val('2');
});
我需要一个解决方案来通过按钮点击调用更改功能。
答案 0 :(得分:1)
以编程方式设置change
元素的值时,不会引发select
事件。要解决此问题,您可以手动trigger()
一个:
$('select').change(function() {
console.log('changed', this.value)
});
$('.z').click(function() {
$("select").val('0').trigger('change');
});
$('.o').click(function() {
$("select").val('1').trigger('change');
});
$('.t').click(function() {
$("select").val('2').trigger('change');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select style="display: none">
<option value="0">zero</option>
<option value="1">one</option>
<option value="2">two</option>
</select>
<button class="z">zero</button>
<button class="o">one</button>
<button class="t">two</button>
&#13;
答案 1 :(得分:1)
<select style="display:none">
<option value="0">zero</option>
<option value="1">one</option>
<option value="2">two</option>
</select>
<button class=btn data-select-val="0">zero</button>
<button class=btn data-select-val="1">one</button>
<button class=btn data-select-val="2">two</button>
$('select').change(function() {
alert($(this).val());
});
$('.btn').click(function(){
$("select").val($(this).data("select-val")).change();
});
答案 2 :(得分:0)
使用.trigger
功能举起change
事件。
答案 3 :(得分:0)
将您的代码更改为:
$('select').change(function(){
alert("ok");
});
$('.z').click(function(){
$("select").val('0').change();
});
$('.o').click(function(){
$("select").val('1').change();;
});
$('.t').click(function(){
$("select").val('2').change();;
});