【发布时间】:2015-02-26 23:56:02
【问题描述】:
我的想法很简单。我有一个由 3 个项目的无序列表组成的菜单栏。每个项目都有一个与标题一致的图像。我用 Photoshop 制作了每个图标的“活动”版本。每次将列表项悬停时,我都希望 img 的 src 更改为“活动”图标。但我也希望“活动”图标在点击后保持不变。
我对它应该如何编写有一个大致的想法,但我之前从未使用过 bind() 或 unbind()
我想知道下面的正确写法:
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,但如果您需要,我会发布它。这是 3 个类中的 1 个(列表项)的示例,所以我不知道您是否可以使用它的父级并使用 children() 并根据悬停在哪个子级上的返回值更改图标或点击了,但这会更有帮助。
更新
好的,所以我正确使用了unbind,但是列表项中img的src只会改变一次。这意味着如果我一次单击所有这些,则 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");
});
};
【问题讨论】: