Javascript Jquery-单击Select元素-如何在每次单击时只执行一次?
我在表单上有一个select元素,我需要它,当我点击它时,一些代码会执行,当我选择一个选项时,没有代码会执行 下面的代码被执行了两次,所以我无法选择一个选项,代码再次执行,我选择的选项被重置 HTML:Javascript Jquery-单击Select元素-如何在每次单击时只执行一次?,javascript,jquery,onclick,Javascript,Jquery,Onclick,我在表单上有一个select元素,我需要它,当我点击它时,一些代码会执行,当我选择一个选项时,没有代码会执行 下面的代码被执行了两次,所以我无法选择一个选项,代码再次执行,我选择的选项被重置 HTML: <select class="form-control" id="opportunity_id" name="opportunity_id"> <option value="">(Choose opportunity)</option> </se
<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;
});
}
});
});
$(“#商机_id”)。在('click',函数(ev){
$.ajax({
url:“/opportunitylist/”,
键入:“GET”,
成功:功能(再支持机会){
var$select=$(“#机会_id”);
$select.find('option').remove();
var计数=0;
$select.append(“(选择机会)”);
美元。每个(评估(再支持机会)、功能(键、值){
$select.append(“”+value[1]+“”);
计数=计数+1;
});
}
});
});
我的问题是,这段代码有修复程序吗?如何使此代码在每次单击select元素时执行一次?使用on focus解决
$('#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;
});
}
});
});
$(“#商机_id”)。关于('focus',函数(ev){
$.ajax({
url:“/opportunitylist/”,
键入:“GET”,
成功:功能(再支持机会){
var$select=$(“#机会_id”);
$select.find('option').remove();
var计数=0;
$select.append(“(选择机会)”);
美元。每个(评估(再支持机会)、功能(键、值){
$select.append(“”+value[1]+“”);
计数=计数+1;
});
}
});
});
每当使用事件链接触发事件时,可以尝试删除事件处理程序,如:
$('.selector')
.off('click', '.item')
.on('click', '.item', function() {
// code goes here
})
因此,在您的情况下,它将类似于:
$('#opportunity_id').off('click').on('click',callBackEnd());
function callBackEnd(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;
});
}
});
}
$('#opportunity_id')。关闭('click')。打开('click',callBackEnd());
函数调用后端(ev){
$.ajax({
url:“/opportunitylist/”,
键入:“GET”,
成功:功能(再支持机会){
var$select=$(“#机会_id”);
$select.find('option').remove();
var计数=0;
$select.append(“(选择机会)”);
美元。每个(评估(再支持机会)、功能(键、值){
$select.append(“”+value[1]+“”);
计数=计数+1;
});
}
});
}
使用更改
事件而不是单击
。啊,我明白了。为什么不在页面加载后加载这些呢?它们似乎不依赖于ajaxHi中的任何其他数据,我不会在页面加载后加载,因为每次用户单击操作系统选择框时,我都需要进行此ajax调用。