JQuery .each并使用原始Javascript进行迭代

时间:2012-08-11 10:22:19

标签: javascript jquery html5 audio

我正在努力完成这样的事情

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();
    }
});

我有什么遗失的吗?

3 个答案:

答案 0 :(得分:5)

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

$('audio').each(function() {
    if(this.currentTime != 0) {
        this.pause();
    }
});
  • 如果要访问该元素,请使用this
  • 如果要在元素上调用jQuery函数,请使用$(this)
  • 永远不要使用$(this)[0],而不是['Hello'][0]而不是'Hello'

答案 1 :(得分:2)

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

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

答案 2 :(得分:-1)

你无法检查$(this).current Time,因为$(this)是一个jquery对象,

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