Моя идея очень проста. У меня есть панель меню из неупорядоченного списка из 3 предметов. Каждый элемент имеет изображение, совпадающее с заголовком. Я сделал Photoshop «активную» версию каждого значка. Каждый раз, когда элемент списка зависает, я хотел, чтобы src img изменился на значок «active». Но я также хочу, чтобы значок «active» оставался один раз нажатым.Как отменить() событие hover/mouseover?
У меня есть общее представление о том, как это должно быть написано, но я никогда не использовал Bind() или отвязать() перед
Я хочу знать, как правильно написать следующее:
function nav_handler() {
$(".nav_services").hover(function() {
var src = $(".nav_services img").attr("src", "files/img/services2.png");
$(".nav_services").mousedown(function() {
$(this).unbind(hover);
});
}, function() {
var src = $(".nav_services img").attr("src", "files/img/services.png");
});
};
Я не думаю, что для этого вопроса нужен какой-либо HTML или CSS, но я отправлю его, если вам это нужно. Это был пример 1 из 3-х классов (элементы списка), поэтому я не знаю, можете ли вы сделать это, используя его родительский элемент и используя children(), и измените значок на основе возвращаемого значения, на которое был навешен ребенок или нажмите, но это будет еще более полезно.
UPDATE
Хорошо, так что я использовал отвязать правильно, но ГКЗ IMG в элементе списка будет изменить только один раз. Значение, если я нажимаю на них по одному, src будет меняться только один раз. Это полнофункциональная настоящее время я использую:
function beta_handler() {
//Hover for Nav-item #1 (Services)
$(".nav_services").hover(function() {
var src = $(".nav_services img").attr("src", "files/img/services2_active.png");
$(".nav_services").mousedown(function() {
if ($(".nav_home").hasClass("nav_active")) {
$(".nav_home").removeClass("nav_active");
var src = $(".nav_home img").attr("src", "files/img/home2.png")
$(this).addClass("nav_active");
//$(this).unbind("hover");
$(this).unbind("mouseenter mouseleave");
}
else if ($(".nav_contact").hasClass("nav_active")) {
$(".nav_contact").removeClass("nav_active");
var src = $(".nav_contact img").attr("src", "files/img/contact2.png")
$(this).addClass("nav_active");
//$(this).unbind("hover");
$(this).unbind("mouseenter mouseleave");
}
});
}, function() {
var src = $(".nav_services img").attr("src", "files/img/services2.png");
});
//Hover for Nav-item #2 (Home)
$(".nav_home").hover(function() {
var src = $(".nav_home img").attr("src", "files/img/home2_active.png");
$(".nav_home").mousedown(function() {
if ($(".nav_services").hasClass("nav_active")) {
$(".nav_services").removeClass("nav_active");
var src = $(".nav_services img").attr("src", "files/img/services2.png")
$(this).addClass("nav_active");
//$(this).unbind("hover");
$(this).unbind("mouseenter mouseleave");
}
else if ($(".nav_contact").hasClass("nav_active")) {
$(".nav_contact").removeClass("nav_active");
var src = $(".nav_contact img").attr("src", "files/img/contact2.png")
$(this).addClass("nav_active");
//$(this).unbind("hover");
$(this).unbind("mouseenter mouseleave");
}
});
}, function() {
var src = $(".nav_home img").attr("src", "files/img/home2.png");
});
//Hover for Nav-item #3 (Contact)
$(".nav_contact").hover(function() {
var src = $(".nav_contact img").attr("src", "files/img/contact2_active.png");
$(".nav_contact").mousedown(function() {
if ($(".nav_services").hasClass("nav_active")) {
$(".nav_services").removeClass("nav_active");
var src = $(".nav_services img").attr("src", "files/img/services2.png")
$(this).addClass("nav_active");
//$(this).unbind("hover");
$(this).unbind("mouseenter mouseleave");
}
else if ($(".nav_home").hasClass("nav_active")) {
$(".nav_home").removeClass("nav_active");
var src = $(".nav_home img").attr("src", "files/img/home2.png")
$(this).addClass("nav_active");
//$(this).unbind("hover");
$(this).unbind("mouseenter mouseleave");
}
});
}, function() {
var src = $(".nav_contact img").attr("src", "files/img/contact2.png");
});
};
Я изменил свой код на развязывание как mouseenter, так и mouseleave, и каждый раз, когда я наводил курсор после того, как я щелкнул все три изображения элементов списка, они больше не изменяются при наведении или щелчке, как я заявил в обновлении. – Karmaxdw
Должна ли функция клика находиться вне функции наведения? – Karmaxdw
Это много кода для сортировки ... было бы проще и быстрее ответить нам, если вы предоставили демо-версию проблемы. И да, «клик» должен быть отдельным. – Mottie