Я создаю букмарклет, который отображает некоторую информацию о первом элементе, который вы нажимаете после запуска букмарклета. Я бы хотел, чтобы у него был элемент, над которым вы нависаете, контур, но только до того, как вы нажмете. После того, как вы выбрали элемент, контур больше не будет отображаться при зависании (кроме случаев, когда он уже сделал это до моего букмарклета).
Чтобы получить элемент с щелчком, это отлично работает для меня:
function getClickedElement(e) {
document.removeEventListener("click", getClickedElement);
e.preventDefault();
clickedElement = e.target || e.srcElement;
// Some code that displays information on clickedElement...
}
document.addEventListener("click", getClickedElement);
Но я не знаю, как сделать CSS. Он будет работать так, как все элементы получат этот CSS:
:hover {
outline: 1px solid black;
}
при выборе элемента, но останавливается после выбора элемента. Надеюсь, что все имело смысл.
Небольшой пример с объяснением принципа!
document.addEventListener('click', function(evt) {
var target = evt.target || evt.source;
if(!target.classList.contains('element')) return;
if(target.classList.contains('selected'))
target.classList.remove('selected');
else
target.classList.add('selected');
}, true);
div.element {
width:100px;
height:100px;
background-color:silver;
display:inline-block;
}
.element.selected {
background-color:black;
}
.element:not(.selected):hover {
outline: 1px solid red;
}
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>