CSS图像过渡图和jQuery:如何使用第二个li列表? [英] CSS image rollover map and jQuery : how to use a second li list?

查看:112
本文介绍了CSS图像过渡图和jQuery:如何使用第二个li列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前正在使用此可点击的地图(狼的地图),但我想使用除了用作脚本基础的国家/地区之外,还使用第二个国家/地区列表.由于演示的原因,第二个菜单不能与地图位于同一DIV中.我一直在搜索JQuery文档,以了解如何在选定的元素之外的其他元素上触发操作,但是我不确定我是否正确-可能无法正常工作.

I'm currently using this clickable map (Wolf's map) but I would like to use a second li list of countries in addition of the one that serves as a foundation for the script. The second menu cannot be in the same DIV as the map for presentation reasons. I've been searching through the JQuery documentation to understand how I can trigger an action on another element than the one selected but I'm not sure I've got it right - probably not as it is not working.

原始脚本如下:

    $(document).ready(function(){

 var new_map='<span class="map"><span class="s1" /><span class="s2" /><span class="s3" /><span class="s4" /><span class="s5" /><span class="s6" /><span class="s7" /><span class="s8" /><span class="s9" /><span class="s10" /><span class="s11" /><span class="s12" /><span class="s13" /><span class="s14" /><span class="s15" /><span class="s16" /><span class="s17" /><span class="s18" /></span>';
 var new_bg=$("<span>");
 new_bg.addClass("bg");
 $("#europe li a").append(new_map);
 $("#europe li a").append(new_bg);

});

我想做的是当悬停另一个不是#europe li a的元素时触发相同的动作.我已经尝试过了:

What I would like to do is to trigger the same action when hovering another element that is not #europe li a. I have tried this :

$(document).ready(function(){

 var new_map='<span class="map"><span class="s1" /><span class="s2" /><span class="s3" /><span class="s4" /><span class="s5" /><span class="s6" /><span class="s7" /><span class="s8" /><span class="s9" /><span class="s10" /><span class="s11" /><span class="s12" /><span class="s13" /><span class="s14" /><span class="s15" /><span class="s16" /><span class="s17" /><span class="s18" /></span>';
 var new_bg=$("<span>");
 new_bg.addClass("bg");
 $("#carteeurope li a").append(new_map);
 $("#carteeurope li a").append(new_bg);

 $("#menudroite li a").hover(function(){
 $(new_map).appendTo("#carteeurope li a");
 $(new_bg).appendTo("#carteeurope li a");
 });

});

它会产生某些效果,但效果却不尽如人意:它看起来确实可以移动但不能移动到合适的位置(某些国家在第二个菜单上悬停了几下后才变成白色背景).

It makes something but not the desired effect : it looks like the map can move indeed but not to the good positions (some countries get a white background after several hovers on the second menu).

如果您能帮助我,我将不胜感激!

I would be very grateful if you could help me !

致谢.

PS:一些相关的HTML和CSS部分.

PS : some relevant HTML and CSS parts.

原始列表

<div id="b">
     <ul id="europe" class="bottom five_columns">
      <li id="europe1"><a href="#" title="Albania">Albania</a></li>
      <li id="europe2"><a href="#" title="Andorra">Andorra</a></li>
      <li id="europe3"><a href="#" title="Austria">Austria</a></li>
      ...

我要添加的菜单

<div id="menudroite">
<ul>
<li><a href="#">Accueil</a></li>
<li><a href="#" title="France">France</a></li>
<li><a href="#" title="Grèce">Grèce</a></li>
...

原始CSS

#europe,#europe span.bg{background:transparent url('europe-600px.png') no-repeat -9999px 0}
#europe{position:relative;top:0;left:0;display:block;background-position:0 -966px;list-style:none}
 #europe *{padding:0;margin:0;border:0 none;outline:0 none}
  #europe li{cursor:pointer}
  #europe li span{position:absolute;display:block;width:0;height:0;z-index:15}
  #europe li a span.bg{z-index:3}
  #europe li .map{top:0;left:0}
...
 #europe li span{position:absolute;display:block;top:0;left:0;width:0;height:0;z-index:15}
 #europe1 a:hover .bg{top:395px;left:303px;width:20px;height:40px;background-position:-10px -10px} #europe1 .s1{top:401px;left:303px;width:15px;height:32px} #europe1 .s2{top:397px;left:305px;width:8px;height:4px} #europe1 .s3{top:418px;left:318px;width:4px;height:9px}
 #europe2 a:hover .bg{top:385px;left:133px;width:5px;height:6px;background-position:-35px -10px} #europe2 .s1{top:383px;left:131px;width:9px;height:10px}
...

推荐答案

此功能解决的问题:

  $("#menudroite li.menudroitepays a").hover(
   function(){
    var country=$(this).attr("id");
    $("#europe" + country + " a").addClass("active");
   },
   function(){
    var country=$(this).attr("id");
    $("#europe" + country + " a").removeClass("active");
   }

这篇关于CSS图像过渡图和jQuery:如何使用第二个li列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆