从下拉菜单中选择选项时出现问题。 这个概念是这样的:
**两个城市下拉菜单和"添加"按钮是未来的DOM元素,所以我使用委托。
执行此操作时,我将在FIRST console.log
中获得以下结果:
1
2
1
3
console.log
中看到以下结果:1
2
1
3
我的问题是它发送了之前选择的所有值,直到我按下"添加"按钮而不是仅发送最后选择的值(值3)。
我做错了什么?
谢谢!
以下代码:
<select id="city" name="city">
<option value="1">London</option>
<option value="2">Manchester</option>
<option value="3">Leeds</option>
</select>
<button type="button" id="addToDatabase">Add</button>
$(document).on('change','select#city',function(){
var cityID = $('select#city').val();
console.log(cityID); //first console.log
$(document).on('click','#addToDatabase',function(){
console.log(cityID);//second console.log
$.post('js/ajax/addtodatabase.php', {cityID: cityID},
function(output){
console.log(output);//third console.log
}
);
});
});
答案 0 :(得分:1)
尝试不按如下方式嵌套函数,第二个函数使用$('#city').val()
而不是cityId
var,因为现在它们没有嵌套:
$(document).on('change','select#city',function(){
var cityID = $(this).val();
console.log(cityID); //first console.log
});
$(document).on('click','#addToDatabase',function(){
console.log($('#city').val());//second console.log
$.post('js/ajax/addtodatabase.php', {cityID: $('#city').val()},
function(output){
console.log(output);//third console.log
}
);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="city" name="city">
<option value="1">London</option>
<option value="2">Manchester</option>
<option value="3">Leeds</option>
</select>
<button type="button" id="addToDatabase">Add</button>
希望这有帮助,