jQuery -在一个页面中加载两个脚本,其中一个在启动后失败
jQuery - Loading two script in one page, one failed after the other was launched
我有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);
}
});
});
});
第一个场景:
- 如果我更改日期,通话正常
- 然后,如果我更改timeableoffers调用失败,就像未检测到更改事件一样。
第二个场景:
- 如果我改变时间表提供呼叫工作(事件检测)
- 然后,如果我改变日期,呼叫也工作(事件检测)
- 如果我再次更改timeableoffers,调用失败。但是改变day - soffer仍然有效
发生了什么事,我能做些什么来解决它?
谢谢!
胡乱猜测,因为我没有看到你的HTML:
您的#timeAndOffers
是同时包含#timetableOffers
和offersByDay
的元素吗?
如果是这样,在$('#daysOffers').change
的回调方法中,您将清空它并在其中重新添加data
,从而重新创建#timetableOffers
选择。
使用.change
does附加到#timetableOffers
的事件侦听器在更改新选择时不会触发,因为它所附加的DOM元素不再存在。
你有两个选择:
- 在
$('#daysOffers').change
的回调结束时重新连接事件监听器,或者 - 使用
jquery.on
,它将使事件处理程序被调用,即使事件是由绑定时不存在的DOM元素触发的。
我认为最好的解决方案是第二种,这需要你修改
$('#timetableOffers').change(function(){
$(document).on('change', '#timetableOffers', function(){
相关文章:
- 如何在所有ng点击事件AngularJS上启动一个方法
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- promise.all在一个forEach循环中——所有东西都同时启动
- 如果模糊事件的任何一个子项获得焦点,请阻止启动模糊事件
- 使用一个方法在c#中启动其他方法
- Skrollr.js在向上滚动时启动另一个动画
- 谷歌地图Api v3:点击信息窗口中的按钮时启动一个操作
- 我们如何在jQuery Datatable调用结果中启动另一个jQuery插件,而不是页面就绪函数
- 创建一个键盘快捷方式来启动Google Chrome扩展
- Nodejs:在节点服务器启动时运行一个js文件
- 如何创建一个onclick函数,该函数在按下重新启动按钮时被调用
- JQuery启动文件下载,然后运行一个函数
- 我如何创建一个Chrome应用程序,有效地充当信息亭模式下的启动页面
- 如何在另一个原型事件完成后启动该原型事件
- 从另一个应用程序启动一个MobileFirst应用程序,并在活动启动后接收活动
- 只有在前一个功能成功完成的情况下,我才能正确地启动此功能
- 请给我添加一个启动和停止按钮
- 如何打开一个启动模式与一个特定的选项卡活动
- 我如何绘制一个维度vs另一个维度(使用dc.js, crossfilter.js) ?包括一个启动示例
- 如何停止HTML5中的所有其他视频当一个启动