jQuery-单击选择元素时-每次单击仅执行一次?

时间:2019-04-08 22:40:48

标签: javascript jquery onclick

我在表单上有一个select元素,当我单击它时,我需要它执行一些代码,而当我选择一个不执行代码的选项时。

下面的代码被执行了两次,所以我无法选择一个选项,代码会再次执行,并且我对自己选择的选项进行了重置。

HTML:

<select class="form-control" id="opportunity_id" name="opportunity_id">
    <option value="">(Choose opportunity)</option>
</select>

JS:

$('#opportunity_id').on('click', function(ev) {

    $.ajax({
      url: "/opportunitylist/",
      type: 'GET',
      success: function(resOpportunities) {

        var $select = $('#opportunity_id');
        $select.find('option').remove();

        var count = 0;
        $select.append("<option value=''>(Choose opportunity)</option>");
        $.each(eval(resOpportunities), function(key, value) {
            $select.append('<option value=' + value[0] + '>' + value[1] + '</option>');
            count = count+1;                              
        });
      }
    }); 
});

我的问题,此代码有一些解决方法?每次单击select元素时,如何使此代码执行一次?

2 个答案:

答案 0 :(得分:0)

专注解决

$('#opportunity_id').on('focus', function(ev) {

$.ajax({
  url: "/opportunitylist/",
  type: 'GET',
  success: function(resOpportunities) {

    var $select = $('#opportunity_id');
    $select.find('option').remove();

    var count = 0;
    $select.append("<option value=''>(Choose opportunity)</option>");
    $.each(eval(resOpportunities), function(key, value) {
        $select.append('<option value=' + value[0] + '>' + value[1] + '</option>');
        count = count+1;                              
    });
  }
}); 
});

答案 1 :(得分:0)

每当使用以下事件链触发事件时,您都可以尝试删除事件处理程序:

WHERE inSeries IN (‘90’,’91’,’92’,’93’,’94’)

所以对于您来说,它就像:

$('.selector')
        .off('click', '.item')
        .on('click', '.item', function() {
            // code goes here
         })