我有一些兼容性问题。我需要动态更新一些代码。
当您点击< select>时element,它使用AJAX运行一些调用服务器来更新所有<选项>元素。然而,我的问题是,在IE(测试11)中,当您将鼠标悬停在任何选项上时,它就像函数再次运行一样。这是我所拥有的片段:
j $('选择[name = vessel]')。click(function(e){
var tour_ID = j $('选择[name = tour]')。val();
var trip_Date = j $(' input [name = trip_Date]')。val();
var ve_ID = j $('选择[name = vessel]选项:selected')。val(); //选择Grab选项用户
fetch_Vessel(tour_ID,trip_Date,ve_ID," main_Tour"); // AJAX魔术
});
< select class =" form-control"名称="容器">
< option value =" -1"> - 请选择 - < / option>
< PHP
$ vessel_query = mysqli_query($ conn,' SELECT * FROM Vessel')
或死("错误:" .mysqli_error($ conn));
while($ vessel_Results = mysqli_fetch_array($ vessel_query)){
if($ vessel_Results [' ve_ID'] == $ ve_ID){
echo'<选项选择值="'。$ vessel_Results [' ve_ID']。'">'。$ vessel_Results ['船只名称&#39]。'< /选项>&#39 ;;
}
其他{
echo'< option value ="'。$ vessel_Results [' ve_ID']。'">'。$ vessel_Results [ '船只名称'。]'< /选项>&#39 ;;
}
}
?>
< /选择>
function fetch_Vessel(tour_ID,trip_Date,ve_ID,tour_Type){
if(tour_ID> 0&& trip_Date!= null){//如果选择了游览和日期,请继续
//在数组中存储要发送到PHP文件的内容
var data = {
" action":" Count_Vessels",//调用什么函数
" trip_Date":trip_Date,//进入功能
" tour_ID":tour_ID //传入功能
};
data = j $(this).serialize()+"&" + j $ .param(data); //连载
Ĵ$就({
键入:" POST",
dataType:" json",
url:" ../ include / booking_Modify.php",// response.php文件的相对或绝对路径
数据:数据,
成功:函数(数据){
if(tour_Type ==" main_Tour"){
Ĵ$('选择[名称=容器]&#39)的儿童('选项&#39)。除去(); //删除所有<选项>分子
Ĵ$('选择[名称=容器]&#39)。HTML(数据[" vessel_Test"]); //添加新<选项>分子
j $('选择[name = vessel]选项')。each(function(index,element){
/ *遍历所有选项并找到值。如果它与用户选择的匹配
*将属性设置为选中
* /
if(j $(this).val()== ve_ID){
j $(this).prop(' selected',true);
}
});
}
},
错误:function(request){
的console.log(request.responseText);
console.log(" SQL:" + request [" SQL"]);
}
});
}
}
我认为拥有.click()意味着它只会触发一次,但我怀疑当我将鼠标悬停在<选项>上时,它会多次触发元件
我想要实现的是在单击选项选项或选项卡选项时仅使.click()触发一次。任何帮助将不胜感激