我有3个选择框:日期,时间表和优惠。
如果我们更改日期选择值:时间表和优惠也会改变。
如果我们更改时间表:只有商品选择会更改。
为了做到这一点,我有两个ajax调用:
$(document).ready(function() {
//If we change the day
$('#daysOffers').change(function(){
var selectedDate = $('#daysOffers option:selected').val();
console.log(selectedDate);
$.ajax({
url: '<?= Yii::app()->createUrl('place/orderOffersBySelectedDate') ?>',
type: 'GET',
data: 'placeId='+<?=$placeId ?>+'&cityId='+<?= $cityId ?>+'&selectedDate='+selectedDate+'',
success: function(data) {
$('#timeAndOffers').empty();
$('#timeAndOffers').append(data);
}
});
});
//If we change the timetable
$('#timetableOffers').change(function(){
console.log('Changing time');
var selectedDate = $('#daysOffers option:selected').val();
var start = $('#timetableOffers option:selected').data("timestart");
var end = $('#timetableOffers option:selected').data("timeend");
$.ajax({
url: '<?= Yii::app()->createUrl('place/orderOffersBySelectedDate') ?>',
type: 'GET',
data: 'placeId='+<?=$placeId ?>+'&cityId='+<?= $cityId ?>+'&selectedDate='+selectedDate+'&startTime='+start+'&endTime='+end+'',
success: function(data) {
$('#offersByDay').empty();
$('#offersByDay').append(data);
}
});
});
});
第一种情况:
第二种情况:
发生了什么,我该怎么做才能解决问题?
谢谢!
答案 0 :(得分:0)
狂野猜测,因为我看不到您的HTML:
您的#timeAndOffers
元素是否同时包含#timetableOffers
和offersByDay
?
如果是这样,在$('#daysOffers').change
的回调方法中,您将其清空并在其中重新展示data
,从而重新创建#timetableOffers
选择。
您添加到#timetableOffers
并.change
的事件侦听器在更改新选择时不会触发,因为它所附加的DOM元素不再存在。
您有两种选择:
$('#daysOffers').change
的回调结束时重新附加事件监听器,或jquery.on
,即使在附加时不存在的DOM元素触发事件时,也会调用事件处理程序。我认为最好的解决方案是第二个,需要你改变
$('#timetableOffers').change(function(){
到
$(document).on('change', '#timetableOffers', function(){