1

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

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

当点击页面底部的“更多结果”4或5次时,会产生奇怪的效果。这是完整的代码,尝试主页并在底部的“更多按钮”上单击四五次,看到searchrequest相同的迭代pageToken我不明白为什么,你能帮我吗?谢谢你

4

1 回答 1

0

考虑到您在评论中的澄清,您不能$('#moreButton').click(...)searchRequest函数内部调用,因为这是对searchRequest. 这是发生了什么:

  1. searchRequest第一次被调用。如果nPageToken为真(即,非空、未定义、假或 0),#moreButton将添加一个单击处理程序,以便searchRequest在单击该按钮时调用该处理程序。

  2. 您单击按钮,并被searchRequest调用。但如果if (nPageToken)通过,您将添加第二个单击处理程序,因此下一次单击按钮将调用searchRequest 两次

  3. 如果你再次点击按钮,同样的事情会发生,并且searchRequest会在接下来的点击中被调用 4 次。以此类推,呈指数级增长……

解决方案似乎将这部分移到外面searchRequest

$('#moreButton').click(function(){
    searchRequest('', nPageToken);
});
于 2013-04-28T18:02:59.727 回答