Другой вариант - использовать .append()
для удаления элемента. Я знаю, что это звучит как противоположность того, что вы хотите сделать, но когда вы используете .append()
в существующем элементе, он удаляет его из текущего родителя и добавляет его к новому родителю. (Если новый родительский селектор не совпадает с несколькими родительскими элементами, в этом случае создаются копии дочернего элемента.)
Таким образом, вы можете настроить div "staging area", который имеет display:none
. Любые элементы, такие как ваш элемент «.oilDerrick», которые добавляются к плиткам динамически, начинаются как дочерние элементы «рабочей области» и, таким образом, автоматически скрываются и не связаны с каким-либо конкретным элементом плитки. Когда вы .append()
добавляете элемент плитки, который автоматически удаляет его из «области подготовки». Затем, чтобы удалить «.oilDerrick» из плитки, просто .append()
вернитесь в «область подготовки». Div ".oilDerrick" не нужно было бы явно скрывать с помощью CSS, потому что все дочерние элементы div "рабочей области" были бы скрыты, так что вам даже не понадобились бы .show()
и .hide()
(если вы специально не хотите анимировать добавление и удаление).
Предполагая, что ваша законченная игра более сложная и содержит другие объекты, которые могут быть добавлены к плиткам, это также даст вам простой способ найти все неиспользуемые в данный момент объекты: просто перечислите текущих потомков "области подготовки".
В любом случае, я знаю, что вы уже приняли ответ, но я просто подумал, что вам могут понравиться другие идеи.