我正在建立一个网站。我正在使用bootstrap carousel,我根据屏幕的方向动态添加图像。
我的问题是当屏幕处于横向模式时,它会显示所有风景图像(示例5图像)。当方向更改为纵向时,ajax工作并获取肖像图像(示例5图像)并添加到现有的风景图像,从而生成10个图像。如果我再次更改方向,则再次添加风景图像,从而生成15张图像。刷新页面后,仅显示相对于方向的5个图像。
如何在不刷新页面的情况下进行此操作(当方向从横向更改为纵向时,应删除所有横向图像并添加纵向图像而不刷新页面。)
<html>
<head>
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body onresize="send_screen_size()" onload="send_screen_size()">
<div class="container">
<div id="myCarousel" class="carousel slide" data-ride="carousel" >
<div class="carousel-inner"></div>
</div>
</div>
</body>
</html>
function send_screen_size(sParam){
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return decodeURIComponent(sParameterName[1]);
}
}
if(window.innerWidth !== undefined && window.innerHeight !== undefined) {
var w = window.innerWidth;
var h = window.innerHeight;
} else {
var w = document.documentElement.clientWidth;
var h = document.documentElement.clientHeight;
}
var
width = + w ;
height = + h;
var width = width = + w ;
var height = height = + h;
var pro_id = send_screen_size('pro_id');
$.ajax({
async : "false", // !!!MAKE SURE THIS ONE IS SET!!!
type:"POST",
url: "carousel.php",
data:{width: width, height: height, pro_id:pro_id},
dataType: 'json',
success: function (data){
$.each(data, function(i, item) {
$('.carousel-inner').append('<div class = item>'+item.orientation+'</div>')
})
$('.carousel-inner > :first-child').addClass("active");
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
console.log(error);
}
});
}
答案 0 :(得分:0)
你可以尝试
$('.carousel-inner .item').remove();
在$ .ajax调用之前。
您可能还想对窗口onresize事件侦听器进行限制或去抖动。