使用普通的a标签href会导致轮播图效果消失
这是代码,求大佬指点:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/new_file.css">
<script src="jquery-3.4.1.js" type="text/javascript" charset="UTF-8">
</script>
</head>
<body>
<div>
<div id="box">
<div id="img">
<img src="img/1.jpg" alt="" />
<img src="img/2.jpg" alt="" />
<img src="img/3.jpg" alt="" />
<img src="img/4.jpg" alt="" />
</div>
<ul id="num">
</ul>
</div>
</div>
<script>
// 轮播图
$(function() {
init();
changImg(); //解决第一次第一张到第二张的时间间隔
start();
});
//初始化
function init() {
var len = $('#img img').length; //获取图片有多少张
var html = '';
//拼html
for (var i = 0; i < len; i++) {
html += '<li onmouseover="changImg(' + i +
')" onmouseout="reStart(' + i + ')">' + (i + 1) + '</li>';
}
//写进ul
$('#num').html(html);
//显示第一张图片
$('#img img').first().css('display', 'block');
//第一个数字背景颜色
$('#num li').eq(0).addClass('active');
}
//图片轮播
function changImg(num) {
if (num == 'auto') { //定时器自动调用
num = index;
} else { //鼠标放上的时候 清楚定时器
clearInterval(timer);
}
//链式写法
$('#img img').eq(num).css('display', 'block').siblings().css('display',
'none');
$('#num li').eq(num).addClass('active').siblings()
.removeClass('active');
index++;
if (index == $('#img img').length) { //最后一张
index = 0; //第一张
}
}
var index = 0;
var timer; //定时器
//定时器 播放
function start() {
timer = setInterval('changImg("auto")', 2500);
}
//鼠标离开之后 又要自动播放
function reStart(num) {
index = num;
changImg(num);
start();
}
</script>
</body>
</html>
方法有很多啊,不能加a标签的话,直接把链接url加到图片中
然后用jQuery给图片加点击事件 获取图片的url属性在JS中跳转
<div id="img">
<img src="img/1.jpg" alt="" url="1.html"/>
<img src="img/2.jpg" alt="" url="2.html"/>
<img src="img/3.jpg" alt="" url="3.html"/>
<img src="img/4.jpg" alt="" url="4.html"/>
</div>
$("#img img").click(function(){
location.href = $(this).attr("url");
});
题主意思是如何用jQ创建元素吧,$("a")可以创建啊
方法有很多啊,给图片套个<span url="1.html"> 然后用jQuery给span加点击事件 获取span 的url属性在JS中跳转
加链接后,DOM结构变了,js代码的DOM关系也要修改过才行,看下面加粗的js语句,改成那样就没问题了【注意css可能也要调整,由于你没发出来,所以具体不清楚要怎么改】。
解决了你的疑惑能点个采纳吗,谢谢
//图片轮播
function changImg(num) {
if (num == 'auto') { //定时器自动调用
num = index;
} else { //鼠标放上的时候 清楚定时器
clearInterval(timer);
}
//$('#img img').eq(num).css('display', 'block').siblings().css('display', 'none');
//====>
$('#img img').eq(num).css('display', 'block').parent().siblings().find('img').css('display', 'none');
$('#num li').eq(num).addClass('active').siblings()
.removeClass('active');
index++;
if (index == $('#img img').length) { //最后一张
index = 0; //第一张
}
}
img可以直接加链接,需要调整js代码中DOM获取
<div id="box">
<div id="img">
<a href="#"><img src="img/1.jpg" alt="" /></a>
<a href="#"><img src="img/2.jpg" alt="" /></a>
<a href="#"><img src="img/3.jpg" alt="" /></a>
<a href="#"><img src="img/4.jpg" alt="" /></a>
</div>
<ul id="num">
</ul>
</div>
既然 图片外不能加标签,那就直接在图片上加上 url属性
$("#img img").click(function(){
location.href=$(this).attr("url");
});