Jquery - 如何在不销毁DOM的情况下切换mousedown事件?

4

上周五我提出了这个问题,但是表述不够清晰,让我来更好地解释一下:

这可能听起来很基础,但是我有一个包含mousedown事件的容器,我想做的就是在不破坏其属性的情况下切换它。

如果我这样做:

 $("#div").unbind("mousedown")  // This will just destroy the event.

我想我可以将该事件移动到未使用的DOM元素中?然后完成后再切换回来...
所以发生了什么:我有一个插件,现在先叫它Vinny。
  $("#div").vinny(settings);

Vinny有一个鼠标按下事件,我想通过触发器来启用/禁用它。

我想创建一个$fn.disableMouseDown函数来禁用它,但是我想知道是否有一种方法可以解除dom上的mouseDown绑定而不销毁它?

如果您知道快速完成它的方法,请帮帮我!谢谢,Vinny


忘了提一下!bind事件被包装在一个对象中。 所以我有$("#div").plugin() 在插件内部,我有mousedown事件。 - Vinny
2
如果您需要我们的帮助,我认为我们需要更多的细节 :) - morgar
你试图通过调用鼠标按下来切换什么?这是否在 DOM 的其他地方完成?你可以告诉它运行相同的函数或类似的东西吗? - afuzzyllama
5个回答

4
将您的命令放在一个函数内,这样您就可以只用一行绑定/解绑,例如:
function some() {
    // some commands
}

$("#div").bind("mousedown", some);
$("#div").unbind("mousedown");

3

一种方法是只使用一个命名函数,在需要时绑定它,不需要时解绑:

function foo () { 
    // do something on mousedown
}

// When needed:
$("#div").bind("mousedown", foo);

// When not needed:
$("#div").unbind("mousedown", foo);

0

嘿,大家谢谢你们提供的所有想法,但我用了一种hacky的方法来解决这个问题。

我解释一下:

所以这个插件在mousedown事件中绑定在plugin.init()中,在那里我定义了一个本地函数checks disableValue,在那里我只是检查dom是否有a或button标签并返回一个bool值,并将其与已经存在于退出mousedown事件中的其他函数运行。

有意义吗?我也希望如此。

谢谢,


0

我会在事件内部添加一个if(toggle)语句。你有什么原因不能这样做吗?(我能想到的唯一一件事是你不想让事件一遍又一遍地被触发,这是有道理的 - 是这种情况吗?)


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接