通过hover另一个元素使元素可见(不带:hover-property)
好的,这是问题所在:
我有这三个DIV:
……以及这三个DIV – 它们是不可见的(显示:无;) – 在页面上完全不同的位置:
我想要做的是:如果我徘徊“gestaltung_cd”我想让“mainhexa1”可见,如果我徘徊“gestaltung_illu”我想制作“mainhexa2”visbile等等……
正如你所看到的,三个不可见的DIV不是前三个中的子元素……所以“:hover”在这种情况下是不可能的。 有没有一种简单的方法在JQuery中执行此操作?
谢谢,Jochen
您可以使用兄弟选择器。 只要div共享同一个父级,您仍然可以使用hover来影响它们
DEMO
重要代码:
#gestaltung_cd:hover ~ #mainhexa1, #gestaltung_illu:hover ~ #mainhexa2, #gestaltung_klassisch:hover ~ #mainhexa3 { display: block; }
使用jQueryshoverfunction,如下所示:
$('#gestaltung_cd').hover(function() { $('#mainhexa1').toggle(); });
(如果您不想在模糊时隐藏div,则将toggle()更改为show())
使用jQuery的hoverfunction:
var divs = { cd: 'mainhexa1', illu: 'mainhexa2', klassisch: 'mainhexa3' }; $('[id^=gestaltung]').hover(function(){ // selects all elements whose id starts with gestaltung $('#'+divs[this.id.slice('gestaltung_'.length)]).toggle(); });
请注意,在开启者和开放元素之间建立一些关系可能更容易,比如类或其他属性(如nnnnnn的答案)。
这是一个如何做第一个的例子,你只需要对其他两个用相关的ID做同样的事情。
$("#gestaltung_cd").hover( function () { $("#mainhexa1").show(); }, function () { $("#mainhexa1").hide(); } );
我建议你在前三个div中添加一个属性,指定在hover时显示哪个div:
这样,只需使用.hover()
方法就可以在hover时处理显示/隐藏:
$("div[data-maindiv]").hover(function() { $("#" + $(this).attr("data-maindiv") ).show(); }, function() { $("#" + $(this).attr("data-maindiv") ).hide(); });
演示: http : //jsfiddle.net/GFMQR/
$("#gestaltung_cd").hover(function({ $("#mainhexa1").css({ "visibility": "visible" }); }, function() { //Your hover out function });
如果你将每个div块包装在一个容器中,你可以通过索引匹配它们,这将使代码工作,无论有多少div。 像这样的东西:
gestaltung_cd gestaltung_illu gestaltung_klassisch mainhexa1 mainhexa2 mainhexa3
$('.gesaltung-container div').hover( function () { $('.mainhexa-container div').eq($(this).index()).show(); }, function () { $('.mainhexa-container div').eq($(this).index()).hide(); } );
示例小提琴
仅供记录……
你可以只用CSS和HTML(没有javascript)来实现你想要的效果,但你必须让你的元素互相跟随并在CSS中使用+
selector。 就像是 :
HTML
CSS
div#gestaltung_cd:hover + div#mainhexa1 { display:block; } div#gestaltung_illu:hover + div#mainhexa2 { display:block; } div#gestaltung_klassisch:hover + div#mainhexa3 { display:block; }
你可以查看演示http://tinkerbin.com/KP17XUgq