$("p").hover(function() {
var $this = $(this).find('span');
$this.show();
}, function() {
$this.hide();
});
我不想使用mouseenter和mouseleave来避免丑陋的代码,上面的想法是在jquery文档中给出的,逻辑上它很好但是mouseleave部分不起作用
答案 0 :(得分:3)
你的mouseleave函数中没有定义$this
而你的代码正在抛出:
未捕获的ReferenceError:$ this未定义
只需在mouseleave函数中重复var $this
声明:
$("p").hover(function(){
var $this = $(this).find('span');
$this.show();
}, function(){
var $this = $(this).find('span');
$this.hide();
});
答案 1 :(得分:2)
那是因为mouseleave处理程序的上下文中的$this
是undefined
,你还应该在该处理程序中定义变量。
您还可以使用on
和toggle
方法(,如果它不丑陋):
$("p").on('mouseenter mouseleave', function(e) {
$('span', this).toggle(e.type === 'mouseenter');
});
答案 2 :(得分:0)
$this
。只需在鼠标移出处理程序中再次执行.find
调用:
$("p").hover(function(){
$(this).find('span').show();
}, function(){
$(this).find('span').hide();
}
);
答案 3 :(得分:0)
当鼠标发生时再次添加var $this = $(this).find('span');
$("p").hover(function(){
var $this = $(this).find('span');
$this.show();
}, function(){
var $this = $(this).find('span');
$this.hide();
});
答案 4 :(得分:0)
$("p").hover(function(){
var $this = $(this).find('span');
$this.show();
}, function(){
var $this = $(this).find('span');
$this.hide();
}
);
答案 5 :(得分:0)
将$ this添加到您的休假功能中:
$("p").hover(function(){
var $this = $(this).find('span');
$this.show();
}, function(){
var $this = $(this).find('span');
$this.hide();
}
);
答案 6 :(得分:0)
$('p').hover(function() {
$(this).find('span').show();
},function() {
$(this).find('span').hide();
});