Вот пример того, что, я думаю, вы ищете. Показать / скрыть div
при наведении курсора на a
и оставить div
видимым при нажатии a
.
$(document).ready(() => {
$("#thelink").on('mouseover', () => {
// Change state if the link hasn't been clicked, otherwise do nothing
if ($('#thelink').data("clicked") == false) {
$("#thediv").show();
}
});
$("#thelink").on('mouseout', () => {
// Change state if the link hasn't been clicked, otherwise do nothing
if ($('#thelink').data("clicked") == false) {
$("#thediv").hide();
}
});
$("#thelink").on('click', () => {
$("#thelink").data("clicked", true);
$("#thediv").show();
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="thelink" href="javascript:void(0)" data-clicked="false">The link</a>
<div hidden id="thediv">I am usually hidden. Mouse over the link to see me. Click on it and I'll stay visible.</div>
Кстати, все это легко сделать и с ванилью js. Мне нравится показывать людям, что jQuery не является необходимым для многих вещей в наши дни, поэтому вот то же самое с ванилью js:
document.addEventListener('DOMContentLoaded', () => {
document.getElementById('thelink').addEventListener('mouseover', () => {
const linkClicked = JSON.parse(document.getElementById('thelink').dataset['clicked']);
if(linkClicked == false) {
document.getElementById('thediv').hidden = false;
}
});
document.getElementById('thelink').addEventListener('mouseout', () => {
const linkClicked = JSON.parse(document.getElementById('thelink').dataset['clicked']);
if(linkClicked == false) {
document.getElementById('thediv').hidden = true;
}
});
document.getElementById('thelink').addEventListener('click', () => {
document.getElementById('thelink').dataset['clicked'] = true;
document.getElementById('thediv').hidden = false;
});
})
<a id="thelink" href="javascript:void(0)" data-clicked="false">The link</a>
<div hidden id="thediv">I am usually hidden. Mouse over the link to see me. Click on it and I'll stay visible.</div>
Немного более многословно, конечно, но вы не зависите от внешней библиотеки. Если jQuery
облегчает вашу жизнь, во что бы то ни стало, используйте ее, но, по крайней мере, подумайте, действительно ли она вам нужна.