Как вывести alert при перетаскивании одного объекта на другой?
Подскажите как это реализовать? Отслеживать координаты объектов на экране пользователя и ставить событие на mouseup? Или может быть есть какой-нибудь слушатель события, который можно поставить на объект и тот будет будет ждать, когда на него перетащат другой объект? Прошу сильно не кидаться тапками, я только учусь... Ниже привожу пример кода:
window.onload = function () {
var circle = document.createElement('div');
Спасибо, думаю это подойдет. Вот только вопрос. тут написаны собственные классы и методы, а как быть если мы используем jqure, а в частности draggable();. Или методами jquery это не сделать не возможно?
Иван Иванов, Я бы не советовал использовать jq вообще. И очень не рекомендую для mousemove событий.
elementFromPoint - отличное решение для поиска элемента во время перетаскивания.
Иван Иванов, подавляющее большинство адекватных разработчиков пользуется инструментами тогда, когда они упрощают и ускоряют работу. В частности, $ сильно ускоряет разработку приложений меньших по сложности чем web application.
А $ все наперебой не советуют использовать потому что это модно: обругал творчество уважаемого Джона Резига и уже чувствуешь себя личностью, опытным кодером со своим собственным мнением. Побродите по тостеру, по остальным форумам, увидите что ни один серьёзный разработчик не тратит своего времени на отповеди типа "не советую использовать эту библиотеку". Попросту говоря, религиозная неприязнь к $ свидетельствует о том, что пациент носит штаны на лямках и перчатки на резинках.
ЗЫ: elementFromPoint и правда очень полезная штука, но по-хорошему для DnD существуют ивенты , в обработчики для них все целевые элементы пробрасываются в качестве контекста, то есть вы к ним сможете обращаться через this.
Никита Полевой, Я не спорю. По этому и использую vue, angular. Я не др...(молюсь) на ванилу. Но ванила очень помогает новичкам понять кашу что творится за кулисами. Зачастую многие считают двумя параллелями js и jq, делая jq культом. Я говорил о производительности, а не о скорости. И говорил из опыта, когда нужно вложится в заветные 16мс на DnD. Вы же должны понимать, чем вы платите слабыми аргументами ф-ции. Это постоянные проверки, самой ф-ции может быть 1-2 строки, но условий 5-10 строк. Это очень негативно сказывается на тех вещах, где нужна скорость. jq - это всего лишь обвертка, не более. Но за эту обвертку, пользователи платят памятью и процессором.
Можете сказать в чем разница, кроме jq-js в этих кодах.
jq
function n(){}
$('p').on('click',h)
js
function n(){}
var ps=document.querySelectorAll('p')
for(let q=0;q<ps.length;q++){
var p=ps[q];
p.addEventListener('click',h)
}
Алексей Шашенков, технически сравнивать приведённые куски кода нельзя, т.к. у них достаточно сильно отличается внутренний функционал: во втором вызывается querySelectorAll и вешаются обработчики на click, а в первом вызывается getElementsByClassName, создаётся замыкание с вызовом исходной функции, оно кладётся в объект обработчиков и тогда уже вешается в качестве обработчика; таким образом вы можете потом снять обработчики с помощью $.fn.off. К тому же, во втором примере 1) в цикле происходят постоянные обращения к длине коллекции, эта операция работает с DOM, думаю не нужно рассказывать почему это недопустимо, 2) элементы сохраняются в переменную, тоже лишняя операция.
Никита Полевой, Да, только чтобы дойти до getElementsByClassName jq делает кучу проверок с кучей регулярок. Это нормально, это не влияет на скорость.
кладётся в объект обработчиков и тогда уже вешается в качестве обработчика
- странно, на в примере с jq - на каждый элемент будет создан 1 обработчик (т.е. 100 элементов - 100 ф-ций в памяти.), а в примере с js 1 обработчик на все элементы, это тоже мелочь, что нам машины с 4 gb оперативы, пусть висят. Сейчас нет особого выигрыша в скорости между написания кода между jq и js, если только не впихивать безгранично кучу плагинов и пытаться их связать между собой. Я не призываю писать на ваниле. Но я призываю не молится на jq, и выводить её из проектов. Да если пилите ленды, то там js минимум. Но смущает когда в интерфейс тянут jq, и спрашивают почему тормозит. Когда даже профилирование нормально не посмотришь.
Никита Полевой, Я за себя и говорю. Я выше сказал к чему призываю. А ваше решение меня не особо интересует. Но очень плохо, когда люди повсеместно используют jq в ущерб производительности. Особенно на scroll,mousemove событиях.
Алексей Шашенков, люди понимающие что вообще происходит у них в коде и волнующиеся за производительность и с $ вполне могут писать эффективные алгоритмы, а остальные и без всяких библиотек умеют наводнять код кучей бесполезных действий; $ тут ни при чем.