【问题标题】:Detecting when variable equals another variable with jQuery ($.when()?)使用 jQuery 检测变量何时等于另一个变量 ($.when()?)
【发布时间】:2014-04-20 22:37:18
【问题描述】:

目前正在尝试检测播放列表中的 YouTube 视频何时结束,以便我可以播放下一个 (Adding event handler to loop through dynamically created playlist (YouTube API))。我现在正试图找出一个变量何时等于另一个变量,以便导航到播放列表中的下一个视频。

这是检测视频何时结束并将视频 ID 保存到 div (stopID) 的代码:

function stopCycle(event) {
      if (event.data == YT.PlayerState.ENDED) {
           var url = event.target.getVideoUrl();
           var match = url.match(/[?&]v=([^&]+)/);
           var videoId = match[1];
           $('#stopID').html(videoId);
      }
  }

当点击的视频的视频 ID 等于 stopCycle 中的视频 ID(即视频结束时)时,我尝试检测(并使用警报进行测试):

    $('#Playlist').on('click', '.playlistYT', function(){
       $('#subHistory').click();
       videoID = $(this).attr("src").slice(27,38);
       $('#infoID').val(videoID);
       player.loadVideoById(videoID ); 
       var nextVideo = $(this).parent().next().find('.playlistYT');

      $.when($('#stopID').html() == videoID).then(function(){
          alert("asd");
      });

目前,我会立即收到警报,即在 stopID div 甚至包含视频 ID 之前。 $.when 函数哪里出错了?我应该坚持 if/else 语句吗?

【问题讨论】:

  • 请阅读文档!
  • 这是我正在阅读的内容,但我不太明白:api.jquery.com/jQuery.when。如果有更基础的教程,我很乐意阅读。
  • 您是否阅读了顶部的描述“提供了一种执行回调函数的方法……通常是表示异步事件的延迟对象。”
  • 在我读到那个位之后开始浏览 jquery 文档上的延迟对象,并假设它与在 ajax 上调用的对象有关?这就是大多数示例的工作方式,所以我认为它与这段代码无关,这就是为什么我使用 $.when 打了一个问号,但 if 条件似乎不起作用。

标签: javascript jquery youtube-api jquery-deferred .when


【解决方案1】:

$.when 接受一个承诺参数。只需使用 if 条件来检查相等性。

【讨论】:

  • 我事先尝试过 if($('#stopID').html() == videoID)(function(){ alert("asd"); } 但这根本不起作用: /
  • 对不起,我的意思是:if($('#stopID').html() == videoID){ alert("asd"); }
  • 阅读文档。还可以使用 console.log 或浏览器开发工具来查看您正在检查是否相等的两件事的实际值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 2020-01-16
  • 2018-11-23
  • 2015-03-19
  • 2021-03-28
相关资源
最近更新 更多