我想干这个代码:
jQuery(function() {
$(".new-link").hover(
function(){
var parent = $(this).parent();
parent.css("background","#800080");
},
function(){
var parent = $(this).parent();
parent.css("background","transparent");
}
);
});
问题是......我无法在两个匿名函数之外定义parent
变量,因为$(this)将不可用。
我没有提供很多细节。我认为那些是不重要的,因为这是一个理论问题。
简短回答:定义parent
而不是var
,因此它具有全局范围。
答案很长:以上解决方案可能安全,也可能不安全。使用下面建议的解决方案。
答案 0 :(得分:4)
您可以在此处使用返回另一个函数的函数:
function hoverEvent(color) {
return function(){
var parent = $(this).parent();
parent.css("background",color);
};
}
jQuery(function() {
$(".new-link").hover(
hoverEvent("#800080"),
hoverEvent("transparent")
);
});
如果不需要parent
,则可以$(this).parent().css("background",color)
。
答案 1 :(得分:1)
修改,更新
尝试
V1
(function(elem) {
$(".new-link").hover(
function(e){
elem = $(e.target).parent();
elem.css("background","#800080");
}
, function(e){
elem.css("background","transparent");
});
}(undefined));
jsfiddle http://jsfiddle.net/guest271314/3p5vtdyb/3/
V2
function evt(e) {
return $(e.target).parent()
.css("background"
, (e.type === "mouseenter"
? "#800080"
: "transparent"));
};
$(".new-link").hover(evt, evt);