jquery隐藏的select-option变换检测

时间:2017-01-24 12:30:48

标签: jquery html select onchange

如果选择列表被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');
});

我需要一个解决方案来通过按钮点击调用更改功能。

4 个答案:

答案 0 :(得分:1)

以编程方式设置change元素的值时,不会引发select事件。要解决此问题,您可以手动trigger()一个:

&#13;
&#13;
$('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;
&#13;
&#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();;
});