关于动态获取数值的问题

关于动态获取数值的问题

$('.left').click(function() {
console.log($('video:hidden').index());
console.log('左侧点击事件触发');
$('#videoIndex' + clickNumLeft).fadeOut(3000);
clickNumLeft++;
$('#videoIndex' + clickNumLeft).fadeIn(3000);
if(clickNumLeft == 4) {
clickNumLeft = 0;
}
});

上面这段代码控制的是4个元素显示隐藏的函数,但console.log($('video:hidden').index());
为什么在函数里面获取当前显示的元素下标自第二个开始就是0了,不应该动态获取下标的吗?请老师赐教。

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好同学 ,同学应该还有css没有上传 , 因为.left是个空标签 ,老师给他设置了一些样式 ,然后点击它进行测试 ,  $('video:hidden').index()的结果是1 , 并不是0 , 因为根据你上传的代码中 , 是从第二个video开始隐藏的 ,所以你获取的是第二个隐藏的video元素 , 所以点击left , 获取到的索引是1 . 你的代码中并没有设置动态获取元素下标 .

动态获取下标是给页面几个相同元素绑定一个点击事件, 例如页面中有几个.box元素 , 如下使用this,点击哪个获取哪个元素的索引值

http://img1.sycdn.imooc.com//climg/5c1af5e500010e9303810080.jpg

同学想要实现什么要的效果 , 可以重新提问一个新问题 , 把具体的需求详细描述一下 ,这样老师具体的帮助你解决 .

希望解答了你的疑惑 , 祝学习愉快 ,望采纳 .

提问者 目訫 2018-12-20 01:07:40

HTML:

<div id="body">
<video id="videoIndex1" src="../log_video/welcome.mp4" autoplay loop muted></video>
<video id="videoIndex2" src="../log_video/welcome (2).mp4" autoplay loop muted style="display: none;"></video>
<video id="videoIndex3" src="../log_video/welcome (3).mp4" autoplay loop muted style="display: none;"></video>
<video id="videoIndex4" src="../log_video/welcome (4).mp4" autoplay loop muted style="display: none;"></video>
<div class="direction left"></div>
</div>

jQuery:

$(function() {
    $('.left').click(function() {
    console.log($('video:hidden').index());
    console.log('左侧点击事件触发');
    $('#videoIndex' + clickNumLeft).fadeOut(3000);
    clickNumLeft++;
    $('#videoIndex' + clickNumLeft).fadeIn(3000);
    if(clickNumLeft == 4) {
    clickNumLeft = 0;
    }
    });
  });


好帮手慕夭夭 2018-12-19 11:03:52

你好同学 ,请把完整代码粘贴上来 ,便于老师针对代码准确的为你解决问题 , 祝学习愉快 !

  • 提问者 目訫 #1
    HTML: <div id="body"> <video id="videoIndex1" src="../log_video/welcome.mp4" autoplay loop muted></video> <video id="videoIndex2" src="../log_video/welcome (2).mp4" autoplay loop muted style="display: none;"></video> <video id="videoIndex3" src="../log_video/welcome (3).mp4" autoplay loop muted style="display: none;"></video> <video id="videoIndex4" src="../log_video/welcome (4).mp4" autoplay loop muted style="display: none;"></video> </div> jQuery: $('.left').click(function() { console.log($('video:hidden').index()); console.log('左侧点击事件触发'); $('#videoIndex' + clickNumLeft).fadeOut(3000); clickNumLeft++; $('#videoIndex' + clickNumLeft).fadeIn(3000); if(clickNumLeft == 4) { clickNumLeft = 0; } });
    2018-12-20 01:03:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师