如何在jQuery中基于click事件运行另一个事件?

时间:2018-04-05 03:26:04

标签: javascript jquery

我想在用户点击按钮时运行change事件。

$('#b1').on('click', function(){
    $('#select_item').trigger('change');
});

$('#select_item').on('change', function(){

    var jbyr = $(this).find('option:selected').val();

    if(jbyr == 1){
       alert('Option 1');
    }
    else if(jbyr == 2){
       alert('Option 2');
    }
    else{
       alert('Option 3');
    }
});

我正在寻找的是当我点击按钮时,组合框将其选项从之前的1更改为2,然后触发select_item更改脚本,以便显示alert('Option 2')

此外:

#b1是一个按钮,不提交任何内容。它只是强制将组合框选项更改为选项2.当按钮单击更改组合框时,应该触发组合框更改事件。因此,用户不要触摸组合框

3 个答案:

答案 0 :(得分:1)

这似乎是一个简单的例子做得很难。没有任何理由,因为您拥有两条订阅代码,以触发任何事件。所以不要这样做,只需将更改代码封装到一个新功能中即可。另外,我强烈建议您阅读Decoupling Your HTML, CSS, and JavaScript - Philip Walton @ Google Engineer



$(document).ready(function() {
  $('.js-alert').on('click', function() {
    onSelectedChanged($('.js-select'));
  });

  $('.js-select').on('change', function() {
    onSelectedChanged($(this));
  });
  
  function onSelectedChanged($element){
    var jbyr = $element.find('option:selected').val();

    if (jbyr == 1) {
      alert('Option 1');
    } else if (jbyr == 2) {
      alert('Option 2');
    } else {
      alert('Option 3');
    }
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<input type="button" value="click me" class="js-alert" />
<select class="js-select">
<option value="1">Option 1</option>
<option value="2" selected>Option 2</option>
<option value="3">Option 3</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不确定在change上触发click事件的编码需求......

“层叠事件” 肯定不是今年的想法。

我可以从这里说出你要定义一个函数来调用你喜欢的元素的clickchange

所以只需创建一个命名函数:

myFunction(){
  //Do whatever...
}

然后在您喜欢的事件处理程序中调用myFunction()

$(element).on("click",myFunction);

或:

$(element).on("change",myFunction);

答案 2 :(得分:-2)

您需要像这样设置组合框的值。

$('#b1').on('click', function () {
    $('#select_item').val(2);
    $('#select_item').trigger('change');
});

$('#select_item').on('change', function () {

    var jbyr = $(this).find('option:selected').val();

    if (jbyr == 1) {
        alert('Option 1');
    } else if (jbyr == 2) {
        alert('Option 2');
    } else {
        alert('Option 3');
    }
});