gpt4 book ai didi

jquery - 切换 jQuery 事件状态(开/关)而无需再次指定处理程序

转载 作者:行者123 更新时间:2023-12-01 01:36:21 26 4
gpt4 key购买 nike

我有一个元素,它具有悬停(mouseenter/mouseout)事件和与其关联的处理程序。我想停用此事件一次,直到我的页面加载或执行操作,然后我希望可以重新激活它,而无需再次指定相同的处理程序。

如果我做类似的事情:

$(element).on('mouseout', handler); //Initial state when i prepare my object
$(element).off('mouseout'); //To turn off the event for the time-being.

在这里,如果我想重新打开/重新关联事件,我还必须重新分配处理程序。

我的要求是这样的:

  1. 我绑定(bind)事件和处理程序:

     $(element).on('eventName', handler)
  2. 代码:

     $(element).freezeEvent(); //It wont trigger the mouseenter/mouseout event.
  3. 代码:

     $(element).unFreezeEvent(); //It will make mouseenter/mouseout event and its original handler to be called up.

请提出建议。步骤和流程只能是这样。

最佳答案

一个非常简单的解决方案是在处理程序本身中处理卡住问题..

var handler = function (event) {

if (!$(event.target).isFrozen()) {

// do whatever you like...
}
}

jQuery 扩展:

$.fn.freeze = function () {

return this.each(function () {

$(this).data('frozen', true);
});
}

$.fn.unfreeze = function () {

return this.each(function () {

$(this).data('frozen', false);
});
}

$.fn.isFrozen = function () {

return !!this.eq(0).data('frozen');
}

像这样卡住和解冻元素:

$(element).freeze(); // returns jQuery object for chaining
$(element).unfreeze(); // returns jQuery object for chaining

获取当前状态:

var state = $(element).isFrozen(); // returns true or false

要确保您的处理程序在附加后不会立即触发,只需在附加之前卡住该元素即可:

$(element).freeze().on('someEvent', handler);

关于jquery - 切换 jQuery 事件状态(开/关)而无需再次指定处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12857854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com