2013-04-26 116 views
0

我有多个称为图像包装的div,当我将鼠标悬停在其中一个上时,我想显示特定图像包装内的元素,在这种情况下,链接和图像在名为item的p标签内(而不是全部显示)。我搜查了网络,我发现大部分答案都使用$(this)。我不想影响图像包装,所以$(this)不起作用。针对jQuery悬停的多个元素

的HTML:

<div class="image-wrap"> 
<p class="item"><span><a href="#">Link</a><img src=" "></span></p> 
</div> 

<div class="image-wrap"> 
<p class="item"><span><a href="#">Link</a><img src=" "></span></p> 
</div> 

<div class="image-wrap"> 
<p class="item"><span><a href="#">Link</a><img src=" "></span></p> 
</div> 

jQuery的:

<script> 
$('.image-wrap').hover( 
function() { 
$('.item').css('display','block'); 
}, 
function() { 
$('.item').css('display','none'); 
}); 
</script> 

回答

2

解决这个问题的最好方法是使用CSS,JavaScript不。 请考虑下面的CSS来代替:

.image-wrap .item { 
    display: none; 
} 

.image-wrap:hover .item { 
    display: block; 
} 
+0

谢谢,先生,你的答案是辉煌大声笑 – tickerll 2013-04-26 05:23:46

1

使用

$('.image-wrap').hover( 
function() { 
$('.item',this).css('display','block'); 
}, 
function() { 
$('.item',this).css('display','none'); 
}); 

它会发现,在特定.image-wrap

+0

而是直接修改CSS,'show'和'hide'本来可以使用 – 2013-04-26 05:08:09

0

.item你可以做这样的事情。

$('.image-wrap').hover( 
function() { 
    $(this).children('.item').css('display','block'); 
}, 
function() { 
    $(this).children('.item').css('display','none'); 
}); 

$('.image-wrap').hover( 
function() { 
    $(this).children('.item').show(); 
}, 
function() { 
    $(this).children('.item').hide(); 
}); 
+0

感谢您的帮助,它绝对有效。我想知道show/hide和display block/none有什么区别? – tickerll 2013-04-26 05:25:54

+0

@tickerll请阅读这个http://stackoverflow.com/questions/13562439/difference-between-jquery-hide-css-display-none – 2013-04-26 05:36:53

0

“我不想影响图像包,所以$(这)是行不通的。”

需要使用$(this) - 这个想法是从$(this)启动和使用DOM traversal methods选择相关元素。在你的情况$(this).children()应该做的伎俩,或$(this).find('.item')

$('.image-wrap').hover( 
function() { 
    $(this).children().show(); 
}, 
function() { 
    $(this).children().hide(); 
}); 

也没有必要浪费时间设置的CSS属性的时候直接jQuery提供.show().hide()

演示:http://jsfiddle.net/KsqaW/

(请注意,你需要在你的div没有被隐藏或没有什么可以将鼠标悬停在其他内容)

+0

谢谢你的详细信息DOM。我刚开始使用JavaScript,DOM对我来说还不完全清楚。你的解释只是打开了我的眼睛! – tickerll 2013-04-26 05:25:04

+0

不客气。 jQuery使用DOM遍历相当容易,因为jQuery提供了各种方法来导航向上或向下(对祖先和后代)或横向(对同胞)。 – nnnnnn 2013-04-26 05:32:25

+0

我只是想到了一件事...如果该物品不在div标签内并且在其他地方? – tickerll 2013-04-26 05:38:35