【问题标题】:jQuery on hover menu-items change Main image悬停菜单项上的 jQuery 更改主图像
【发布时间】:2014-11-07 12:11:10
【问题描述】:

this site 我们有主菜单。我想在 第三列中更改“主图像”的“悬停”菜单项。 所有者正在使用插件来构建菜单。我坚持这个结构。但我可以给 CSS 类名:links1links2 等(拆分列)见下文:

<div class="grid-column grid-column3 links1 ">
  <ul class="level1">
    <li class="imageLink ">Link 1</li>
    <li class="imageLink ">Link 2</li>
    <li class="imageLink ">Link 3</li>
 </ul>
</div>

第三列Main-image的结构是:

<div id="imageBox">
  <img class="imageChangeDefault">
</div>

是否可以使用 jQuery .attr('src') 更改 图像框 中的图像,具体如何?我真的希望有一个解决方案?

非常感谢!

【问题讨论】:

  • 在您的情况下,content css 具有图像,因此您不应该编辑 attribute,而是像这样更改 css $('.imageChangeDefault').css('content','url(the url of the image)')
  • 感谢您的回答。我不太明白你的意思。它会是什么样子,我该怎么办?非常感谢!
  • 我建议您遵循Roko C. Buljan 给出的答案。唯一需要做的改变就是将代码从attr('src', thumb)更改为css('content','url('+thumb+')')
  • @Cerlin Boss 好的,所以现在我有$(".imageLink").mouseover(function () { var thumb = $(this).data('thumb'); $(this).closest(".parent").find(".imageChangeDefault").css('content','url('+thumb+')'); }); 我现在如何将正确的图像连接到正确的链接?我必须做一些CSS吗?第一个链接“Babyboek”的 CSS 是什么?谢谢!
  • @CerlinBoss 你知道该怎么做吗?提前致谢!

标签: jquery css image src


【解决方案1】:

你的 html 必须是这样的

<ul class="level1">
    <li class="imageLink ">
        <a title="Babyboek" href="http://belmondo-dev01.e-sites.nl/babyboek.html" target="_self" data-bgimage="url to the image">
            <i class=""></i><span>Babyboek</span>
        </a>
    </li>
    <li class="imageLink ">
        <a title="Collegaboek" href="http://belmondo-dev01.e-sites.nl/collegaboek.html" target="_self" data-bgimage="url to the image">
            <span>Collegaboek</span>
        </a>
    </li>
    <li class="imageLink ">
        <a title="Kookboek" href="http://belmondo-dev01.e-sites.nl/kookboek.html" target="_self" data-bgimage="url to the image">
            <span>Kookboek</span>
        </a>
    </li>
    <li class="imageLink ">
        <a title="Liefdesboek" href="http://belmondo-dev01.e-sites.nl/liefdesboek.html" target="_self" data-bgimage="url to the image">
            <span>Liefdesboek</span>
        </a>
    </li>
    <li class="blue ">
        <a title="Bekijk alle boeken" href="http://belmondo-dev01.e-sites.nl/boeken.html" target="_self" data-bgimage="url to the image">
            <span>Bekijk alle boeken</span>
        </a>
    </li>
</ul>

我在anchor 标签中添加了一个data-bgimage 属性,它应该有相应的背景图片。

添加正确的html后添加以下脚本

没有渐变效果

jQuery(document).ready(function(){
    jQuery('.level1 li').mouseenter(function(){
        $this = jQuery(this);
        if(typeof $this.find('img').attr('src') != "undefined"){
            $this.parent().parent().parent().find('.imageChange').css('background','url('+$this.find('img').attr('src')+')').css('background-repeat','no-repeat').css('width','inherit').css('height','inherit').css('background-size','100% 100%');
        }
    });
})

有淡化效果

jQuery(document).ready(function(){
    jQuery('.level1 li').mouseenter(function(){
        var $this = jQuery(this);
        if(typeof $this.find('img').attr('src') != "undefined"){
            var imgelem = $this.parent().parent().parent().find('.imageChange');
            imgelem.hide();
            imgelem.css('background','url('+$this.find('img').attr('src')+')')
                .css('background-repeat','no-repeat')
                .css('width','inherit')
                .css('height','inherit')
                .css('background-size','100% 100%');
            imgelem.fadeIn(500)
        }
    }).mouseleave(function(){
        var $this = jQuery(this);
        $this.parent().parent().parent().find('.imageChange').hide();
    });
})

【讨论】:

  • 最后一个问题:我如何重建它只有fadeIn()fadeTo() 悬停?
  • 是的,它只应该在悬停菜单项时快速淡入。图像周围的灰色边框是什么?非常感谢您的帮助,我真的很感激。
  • 关于淡入淡出。我的意思是我该怎么做才能让它顺利淡入?
  • 现在淡入不是很顺利吗?
  • 现在出现了一个奇怪的行为。我希望它在“鼠标进入”时出现的菜单项(淡入)从不透明度 0 到 100。在“鼠标离开”时它只是消失而不会褪色。谢谢!
【解决方案2】:

只需将data-* 属性与要显示的所需图像的src 附加到LI 元素:

<li data-thumb="thumbs/babyboek.jpg" class="imageLink ">

与 jQuery 相比:

$('[data-thumb]').mouseenter(function() {
   var thumb = $(this).data('thumb');
   $(this).closest(".parent").find(".imageChangeDefault").attr('src', thumb);
});

(P.S. 没有时间进一步查看,但请确保避免重复 ID imageBox

【讨论】:

    【解决方案3】:

    是的,你可以用 jQuery 做到这一点。

    // for image link...
    $('.imageLink').hover(function(){
          //change image for parent...here
          $(this).parent().attr('src', 'new-image');
     }, function(){
    
          // do something in hover out if needed...
     });
    
     // for imageBox ...use this:
    
    $('#imageBox').hover(function(){
         $(this).children(':eq(0)').attr('src', 'new-image');
    }) ;
    

    【讨论】:

    • 感谢您的回复。但是我如何设置'src' 它们都是不同的文件名。我如何将它们拆分到赖特列中(links1links2 等)。我不明白我如何将正确的图像与正确的链接联系起来?谢谢!
    • 要将正确的图像与正确的链接连接起来……您必须将图像与链接进行映射。尝试使用这样的额外 html 属性:
    • 然后获取此属性并设置为新图像...
  • 我不能,因为网站的所有者正在使用插件控制菜单。我不能简单地添加一个额外的属性..
  • 【解决方案4】:

    如你所说,使用 jQuery 是可能的。

    .attr('src', 'imageurl.jpg');
    

    但是,我认为如果您在不同的菜单中预加载图像会更好。 我看到的主要问题是你有一个带有图像 url 的类。

    这里有一个丑陋的 jQuery 工作示例; http://jsfiddle.net/ft52xa5o/

    【讨论】:

    • 非常感谢您的回答!所以基本上我为所有不同的菜单项制作了所有不同的悬停功能?所以我得到了彼此下方的整个功能列表? '你已经在不同的菜单中预加载了图像......' 到底是什么意思?谢谢!
    • 我的意思是“硬编码”我只是说你在课堂上有图像 URL。这不是问题,但如果你有 img src,IMO 会更容易!如果您不能更改代码,只能更改 javascript,我认为您将不得不使用我所说的不同功能来更改它。希望对您有所帮助!
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签