Jquery - переключить событие mousedown, не разрушая его в дом? - PullRequest
4 голосов
/ 30 апреля 2011

Итак, в пятницу я задал этот вопрос, и он не был хорошо написан, позвольте мне объяснить это более подробно:

Так что это может звучать исправительно, но у меня есть этот контейнер, в который я включаю событие mousedown, и все, что я хочу сделать, это переключать его, не разрушая его свойства.

Если это так:

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

Я думал, что смогу переместить событие в элемент dom, который не используется? А потом просто переключи его обратно, когда я закончу ...

Так вот, что происходит: у меня есть плагин, на данный момент просто назовите его Vinny

  $("#div").vinny(settings);

У vinny есть событие mousedown, которое я хочу включить / отключить с помощью триггера.

Я думал, что хотел бы иметь функцию $ fn.disableMouseDown, которая могла бы отключить ее, но мне было любопытно, если бы это был способ отсоединить mouseDown от dom, но не уничтожить его?

Если вы знаете быстрый способ сделать это, выручите меня! Спасибо, Винни

Ответы [ 5 ]

4 голосов
/ 30 апреля 2011

Поместите вашу команду в функцию, чтобы вы могли связывать / отменять привязку только одной строкой, то есть:

function some() {
    // some commands
}

$("#div").bind("mousedown", some);
$("#div").unbind("mousedown");
3 голосов
/ 30 апреля 2011

Один из подходов состоит в том, чтобы просто использовать именованную функцию, связать ее, когда это необходимо, и отменить привязку, когда это не так:

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

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

// When not needed:
$("#div").unbind("mousedown", foo);
0 голосов
/ 03 мая 2011

Привет, ребята, спасибо за все идеи, но я вроде сделал хакерский подход к этому.

Я объясняю:

Так что этот плагин на mousedown связан в plugin.init() и в их я определил локальную функцию проверяет disableValue, а в их я просто проверяю dom на наличие или возвращаю bool и запускаю его для другой функции, которая уже присутствовала при выходе из события mousedown.

Есть смысл?Я тоже на это надеюсь

Спасибо,

0 голосов
/ 30 апреля 2011

вот рабочий пример http://jsfiddle.net/samccone/ENzyk/

Я думаю, что это простое и элегантное решение

0 голосов
/ 30 апреля 2011

Я бы просто вставил оператор if(toggle) в событие.По какой причине ты не можешь этого сделать?(единственное, о чем я могу думать, это то, что вы не хотите, чтобы событие непрерывно запускалось снова и снова, что имеет смысл - так ли это?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...