我不明白为什么这段代码适用于 pc 和 android,但不适用于 iphone / ipad。
var search_type = [<?php foreach($surveys as $sur) {
echo "'" . $sur->id_flashpinion . "', ";
end($surveys);
if ($sur === key($surveys))
echo "'" . $sur->id_flashpinion . "'";
}
?>];
for (var i = 0; i < search_type.length; i++) {
let ids = '#volume' + search_type[i];
var vote = $(ids).data("voted");
if(vote != '') {
$(ids).slider({
min: 0,
max: 100,
value: vote,
range: "min",
slide: function(event, ui) {
return false;
}
});
var myVolume = vote;
let volumeThreshold = [20, 40, 60, 80, 101]
let volumeClasses = ["v0", "v1", "v2", "v3", "v4"]
let classIndex = volumeThreshold.findIndex((threshold) => {return myVolume < threshold});
changeClassTo(volumeClasses[classIndex]);
function changeClassTo(className) {
$(ids).removeClass();
$(ids).addClass("volume " + className);
}
} else {
$(ids).slider({
min: 0,
max: 100,
value: 0,
range: "min",
slide: function(event, ui) {
changeSlider(ui.value);
},
stop: function(_, ui){
var id_flashpinion = ids.replace(/[^0-9]/g,'');
vote = ui.value;
$.ajax({
type: "POST",
url: '/slider/vote',
data:{id_flashpinion:id_flashpinion, vote:vote}
});
$(ids).on("slide", function (event, ui) { return false; });
}
});
function changeSlider(myVolume) {
let volumeThreshold = [20, 40, 60, 80, 101]
let volumeClasses = ["v0", "v1", "v2", "v3", "v4"]
let classIndex = volumeThreshold.findIndex((threshold) => {return myVolume < threshold});
changeClassTo(volumeClasses[classIndex]);
}
function changeClassTo(className) {
$(ids).removeClass();
$(ids).addClass("volume " + className);
}
}
}
完整的代码在这里https://codepen.io/dnl_re/pen/ZJzvJg 我还添加了 jquery ui touch punch,但它仍然不起作用。
我做了一些测试,似乎 safari 不能很好地解释初始值,但我不知道要改变什么,因为我不太擅长 javascript