我制作了一个用于在YouTube上搜索视频的简单脚本,但是此代码有一个奇怪的回声:

var nPageToken = response.nextPageToken;
if (nPageToken){
    $('#moreButton').css('display','block');
    $('#moreButton').click(function(){
        searchRequest('', nPageToken);
    });
} else {
    $('#moreButton').css('display','none');
}

单击页面底部的“更多结果”达4或5次时,会产生奇怪的效果。
这是complete code,尝试home page并在底部的“更多按钮”上单击四到五次,然后查看具有相同searchrequestpageToken的迭代,我不明白为什么,您能帮我吗?谢谢

最佳答案

考虑到您在注释中的澄清,您无法从$('#moreButton').click(...)函数内部调用searchRequest,因为这是对searchRequest的另一次调用。这是怎么回事:

  • searchRequest首次被调用。如果nPageToken为真(即不为null,undefined,false或0),则会添加对#moreButton的点击处理程序,以便在单击该按钮时调用searchRequest
  • 单击按钮,将调用searchRequest。但是,如果if (nPageToken)通过,那么您将添加第二个单击处理程序,因此按钮的下一次单击将调用searchRequest两次。
  • 如果再次单击该按钮,将会发生相同的情况,并且在下次单击时searchRequest将被调用4次。依此类推,呈指数增长...

  • 解决方案似乎将这部分移到searchRequest之外:
    $('#moreButton').click(function(){
        searchRequest('', nPageToken);
    });
    

    10-07 12:38