Jquery — переключать событие наведения курсора мыши, не уничтожая его в dom?

#javascript #jquery #dom

#javascript #jquery #dom

Вопрос:

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

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

Если это произойдет :

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

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

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

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

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

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

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

Комментарии:

1. Забыл упомянуть! Что событие привязки обертывается в объект, поэтому у меня есть $ («#div»). плагин () внутри плагина у меня есть событие mousedown

2. Я думаю, нам понадобится больше деталей, если вам понадобится наша помощь 🙂

3. Что вы пытаетесь переключить, вызывая мышь вниз? Это делается где-то еще в DOM? Вы могли бы просто сказать ему запустить ту же функцию или что-то в этом роде?

Ответ №1:

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

 function some() {
    // some commands
}

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

Ответ №2:

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

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

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

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

Ответ №3:

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

Ответ №4:

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

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

Ответ №5:

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

Я объясняю:

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

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

Спасибо,