0

我正在尝试完成这样的事情

var audios = $('audio');

for(var i = 0; i< audios.length;i++){
    if(audios[i].currenTime != 0)
        audios[i].pause();
}

但是当我使用 JQuery 来做它时,它返回给我它没有任何方法。

$('audio').each(function(){
    if($(this).curentTime !=  0){
     $(this).pause();
    }
});

有什么我想念的吗?

4

3 回答 3

5

使用.each()回调时接收 DOM 元素为this. 您可以(并且必须)直接使用它,而不是再次用 jQuery 包装它。

$('audio').each(function() {
    if(this.currentTime != 0) {
        this.pause();
    }
});
  • 当您要访问元素时,请使用this
  • 当你想在元素上调用 jQuery 函数时,使用$(this)
  • 永远不要使用$(this)[0],这就像['Hello'][0]代替'Hello'
于 2012-08-11T10:25:47.327 回答
2

$(this)是一个 jQuery 对象,你需要用$(this)[0]or来获取 dom 元素$(this).get(0),但你不应该那样做,this直接使用。

$('audio').each(function(){
    if(this.curentTime !=  0){
     this.pause();
    }
});
于 2012-08-11T10:24:14.653 回答
-1

你不能检查 $(this).currentTime,因为 $(this) 是一个 jquery 对象,

$('audio').each(function(){
    if($(this)[0].curentTime !=  0){
     $(this)[0].pause();
    }
});
于 2012-08-11T10:25:59.350 回答