Я рекомендую установить фоновое изображение для воздушных шаров и хранить их как один элемент div. Таким образом, вы узнаете, когда щелкнули по нему, и можете также получать данные непосредственно с него.
Вы можете добавить флажок, чтобы определить, находитесь ли вы в состоянии пролонгации для добавления или удаления прослушивателя. .
let currentColor = null;
const handleRollOver = (event) => {
$(event.target).attr('data-color', currentColor); // set color
};
$('.palette .balloon').click((e) => {
$('.palette .balloon').removeClass('balloon-active');
currentColor = $(e.target).addClass('balloon-active').attr('data-color'); // get color
});
$('.canvas .balloon').click((e) => {
$(e.target).attr('data-color', currentColor); // set color
});
$('.mode-roller').on('change', (e) => {
if (e.target.checked) {
$('.canvas .balloon').on('mouseover', handleRollOver); // enable
} else {
$('.canvas .balloon').off('mouseover', handleRollOver); // disable
}
});
body { padding: 0.5em; font-size: smaller; }
body h1 { margin-top: 0.25em; }
.balloon {
display: inline-block;
background-image: url('https://i.stack.imgur.com/JQ4i3.png');
background-repeat: no-repeat;
width: 2.5em;
height: 2.5em;
background-size: 10em;
margin-right: -0.25em;
}
.balloon:hover { cursor: pointer; }
.balloon[data-color="black"] { background-position: 0.0em 0.0px; }
.balloon[data-color="white"] { background-position: -2.5em 0.0px; }
.balloon[data-color="red"] { background-position: -5.0em 0.0px; }
.balloon[data-color="orange"] { background-position: -7.5em 0.0px; }
.balloon[data-color="yellow"] { background-position: 0.0em -2.5em; }
.balloon[data-color="green"] { background-position: -2.5em -2.5em; }
.balloon[data-color="blue"] { background-position: -5.0em -2.5em; }
.balloon[data-color="violet"] { background-position: -7.5em -2.5em; }
.balloon-active { background-color: #DD7; }
form { border: thin solid grey; padding: 0.33em; margin-top: 0.667em; }
form h2 {margin-top: 0.25em; }
.form-field label { display: inline-block; font-weight: bold; }
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>Balloon Roller</h1>
<div class="palette">
<div class="balloon" data-color="black"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="red"></div>
<div class="balloon" data-color="orange"></div>
<div class="balloon" data-color="yellow"></div>
<div class="balloon" data-color="green"></div>
<div class="balloon" data-color="blue"></div>
<div class="balloon" data-color="violet"></div>
</div>
<div class="canvas">
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
<div class="balloon" data-color="white"></div>
</div>
<form>
<h2>Options</h2>
<div class="form-field">
<label>Roller Mode</label> <input type="checkbox" class="mode-roller">
</div>
</form>
Кроме того, я создал электронную таблицу из ваших изображений, которая доступна здесь:
![spritesheet](https://i.stack.imgur.com/JQ4i3.png)