#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.
Имеет смысл? Я тоже на это надеюсь
Спасибо,