1

当我运行“关闭”点击事件时,我有一个想要停止的功能。

这背后的原因是当我img.start第二次运行 click 事件时,再次调用该函数并且现在运行了两次。

有问题的功能是幻灯片,所以我确实需要该功能只在页面上运行一次。

所以要明确一点,当我单击 时img.close,我希望该BannerSlideshow功能停止并且不再运行。

启动功能点击事件

$('img.start').click(function () {
  BannerSlideshow.Init()
});

结束函数点击事件

$('img.close').click(function () {
  //stop function BannerSlideshow from running
});

幻灯片功能片段

var BannerSlideshow = (function () {
return {
    Init: function () {
        //slideshow functionality            
    }

我已将我的问题更新为更具体,抱歉各位。

4

5 回答 5

1

你可以通过使用 bind () 和 unbind () 来做到这一点

$('img.close').bind('click',function () {
         // your code
    $(this).unbind('click');
});

或者

您可以使用 Off()

$(this).off('click');
于 2013-03-08T09:59:50.613 回答
0

您可以使用关闭方法。离开()

(从 jQuery 1.7 开始,首选 .on() 和 .off() 方法来附加和删除元素上的事件处理程序

$('img.close').off('click');
于 2013-03-08T10:02:03.610 回答
0

为什么不使用带有布尔值的停止功能?

var running = false;

$('img.close').click(function () {
    running = true;

});

如果 running = true,则使用 stop() 函数,否则开始幻灯片

我认为停止功能比取消绑定处理程序更好

于 2013-03-08T10:06:43.227 回答
0

StartSlideshow 函数是什么样的?我猜你可能有一个全局变量来运行幻灯片......

function StartSlideshow() {
    globalVariableRunSlideshow = true;
    while (globalVariableRunSlideshow) {
         /* Do some slideshowing here */
    }
}

然后您的活动可以执行以下操作:

$('img.close').click(function () {
    globalVariableRunSlideshow = false;
});
于 2013-03-08T10:07:01.763 回答
0

用这个:

event.stopPropagation(); 

或使用 on.click

并杀死使用

$(this).off();

或者

use .bind and  .unbind();

最好在这里查看:http: //api.jquery.com/category/events/event-handler-attachment/

于 2013-03-08T10:00:50.837 回答