【问题标题】:JQuery click function does not call another functionjQuery点击函数不调用其他函数
【发布时间】:2013-11-22 10:35:45
【问题描述】:

嗨。
我有一个继续和停止功能。
当我通过单击其中一个蓝色框来调用停止功能时,它会在 1 毫秒后调用继续功能。

我的问题是当我单击“文档”时它应该再次调用停止函数,但它没有这样做,这里有一个小提琴供仔细查看。

JsFiddle

PS:在 javascript 代码中,您必须一直向下滚动,因为我无法包含 Jquery 插件。

我在编码开始的地方用这条评论标记了我的问题:

//############ here starts my part ####################

【问题讨论】:

  • 再次调用stop函数,是你的部分问题。它将一遍又一遍地绑定相同的事件,并且将为每个绑定调用所有事件处理程序。当您单击 10 次时,您将有 1024 个单击事件处理程序绑定到每个元素,并且下一次单击将导致创建另一个 1024 个绑定。再点击几次,您会注意到浏览器每次都会暂停几秒钟,运行数千个事件处理程序并绑定数千个事件。
  • 首先感谢您的帮助。我是 jquery 1 1/2 周或类似的新手,我想知道如何解决这个问题。因为对我来说一切似乎都是正确的。

标签: jquery function call continue


【解决方案1】:

如 cmets 所示,不要在每次调用 stop() 时重新绑定您的事件。让我们将绑定移出,我们还将使用stopPropgation(),这样点击事件就不会冒泡到文档,这将触发插件再次启动它的mojo:

function stop(){     
    $("#webticker").trigger('click'); //This method doesn't provide anything, except perhaps making code a bit more readable
}

$("#webticker").click(function(event){
        event.stopPropagation(); //If we don't stop propagation, the click event will bubble up to the document, which will start the ticker again
        $("#webticker").webTicker('stop');

          if($(event.target).is('#img1')) {
            $('#log').html(event.target.id + ' was clicked.');
            timer = setTimeout(contin, 1);
        } else if($(event.target).is('#img2')){
            $('#log').html(event.target.id + ' was clicked.');
            timer = setTimeout(contin, 1);
        } else if($(event.target).is('#img3')){
            $('#log').html(event.target.id + ' was clicked.');
            timer = setTimeout(contin, 1);
        } else if($(event.target).is('#img4')){
            $('#log').html(event.target.id + ' was clicked.');
            timer = setTimeout(contin, 1);
        } else if($(event.target).is('#img5')){
            $('#log').html(event.target.id + ' was clicked.');
            timer = setTimeout(contin, 1);
        }
  });

JSFiddle:http://jsfiddle.net/rLyyR/6/

【讨论】:

  • 我在您的代码中发现了一个错误,但不知道如何修复它。如果我单击一次,连续功能将启动一次:如果我第二次单击它,它将激活连续功能两次,依此类推。你知道怎么解决吗?还是其他人?
  • 这是 jsfiddle 我如何通过警报link找到它的方式@
  • 我的代码中没有错误,您编写的代码中存在错误,因此,这是您的错误。我在你原来的帖子中解决了你的问题,但既然你取消了接受,我会让你自己试一试这个新问题。提示:这个问题可以用已经提供的答案来解决。
  • 现在我使用了你的代码,我刚刚在 continue 函数中添加了一个警报。当我第一次开始滚动然后单击文档时。它工作正常,但如果我点击它停止的框单击,但是当我想继续它时,它会调用函数继续两次,依此类推
  • 好的,我想我找到了我的错误。但我不知道如何解决它。每次调用我的 contin 函数时,我都会在文档中添加另一个 click 处理程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
  • 2013-10-10
  • 2018-06-09
相关资源
最近更新 更多