
从而要求点击当前音频其他音频关闭,只播放当前音频。
刚开始,只展示第一篇文章时候可以通过点击当前播放按钮的index值,控制然后播放对应音频的index值。
闲话少说上代码:
$(document).on("touchstart",".play",function(){
//获取当前的 index值从而找到audio播放哪一个
var index=$(this).parents('li').index();
var audio=document.getElementsByClassName('audio');
for(var i=0;i<audio.length;i++){
audio[i].pause();
}
audio[index].play();
})
这样的话通过对应的index值能改变img的样式也能控制按需播放。
但是产品哥哥的想法,永远是我等前端切图仔无法理解的。
需要每篇文章都展示出来,那就没法获取对应index值了
改成了这样

就成了这样子的,这是两篇文章,也可能会出现多篇文章,从而就会导致对应的index值是没法获取的,因为这样每篇文章都是遍历出来的所以获取当前的index值去播放对应的音频就会出现问题。音频对象是通过全getElementsByClassName拿到所有的,没发过去当前点击的index,所以这种方法over了。
绞尽脑汁的情况下想到了jquery节点操作转化为DOM对象。
这样就完美解决了音频按需播放的问题
这里顺便提一下
jquery的$("audio").play(),是不能播放成功的。因为$("audio")这书数据类型是一种类数组形式,而audio.play()必须是DOM对象。所以这边就有一个很基础的问题,jquery对象和DOM对象的转化。
<div></div> 转化成jquery对象直接就是$("div")就成功过。
而$("div")[0]也可以转化为DOM对象;
同时打印上边的两个数据,
console.log($("div"));

从而就知道jquery获取的标签元素是类数组的数据格式
console.log($("div")[0])

正好是这个类数组模式的第一个元素,就是我们熟悉的DOM节点了。
综上所说,又回顾了一下基础的js知识,以及jquery
温故知新从而久远。