我需要帮助使用 jQuery 切换背景图像

Posted

技术标签:

【中文标题】我需要帮助使用 jQuery 切换背景图像【英文标题】:I need help switching background images with jQuery 【发布时间】:2015-06-02 09:56:02 【问题描述】:

我有一个从 wordpress 中的自定义帖子类型生成的 img url 的无序列表。

我有一个滑块,并且正在使用幻灯片的数量来确定我想要哪个图像 url 作为我的元素的背景。

生成列表示例:

<ul class="tes-image-links">
    <li>http://img-url1</li>
    <li>http://img-url2</li>
    <li>http://img-url3</li>
</ul>

我的 jQuery 示例

$('.cycle-slideshow').find('.cycle-slide').each(function(i)
    if (  $(this).hasClass('cycle-slide-active') )
        var apimglink = $('.tes-image-links').children('li').eq(i).text();
        $('.ap-testimonial.img-back').css("background" , "'url('"+apimglink+"') !important'" );
    
);

当我使用 console.log() 时,它会吐出 &lt;li&gt; 标记中的正确文本,但我似乎无法让它工作。

【问题讨论】:

试试"url('"+apimglink+"') !important",另外我认为你不需要important,因为.css()会添加内联样式。 谢谢,我试过不带 !important 和带 important ,但似乎还是不行。 【参考方案1】:

从背景属性中删除单引号和 !imprtant。也不要忘记将你的函数包装在一个 DOM 就绪函数中

$(document).ready(function()
    $('.cycle-slideshow').find('.cycle-slide').each(function(i)
        if (  $(this).hasClass('cycle-slide-active') )
        var apimglink = $('.tes-image-links').children('li').eq(i).text();
        $('.ap-testimonial .img-back').css("background" , "url('"+apimglink+"')" );

        

    );
    )

【讨论】:

您好,感谢您的回复。我把它包裹在 $(window).load(function());我试过把你给我的东西放进去,但还是没有运气。当我执行console.log() 时,它会返回与幻灯片对应的img url,但它没有在后台用于ap-testimonial.img-back。此外,当幻灯片更新和新幻灯片 hasClass('cycle-slide-active') 时,它不会更新,并且我没有在控制台中从我的 console.log(apimglink) 收到新的 img url。 我不知道什么是.ap-testimonial.img-back 类?如果他们是孩子和父母,他们之间需要一个空格: .ap-testimonial .img-back 您也有条件检查元素是否具有类“循环幻灯片活动”。似乎您有一个幻灯片,它会在几秒钟后发生变化。因此,您需要在每次更改时调用此函数,而不是仅在 $(window).load 是同一个元素。它不起作用,所以我试图更具体。它有多个类名。 “.ap-testimonial.img-back”。所以应该是 $(document).on('change', 'cycle-slide', function() )?我会试一试,但它不应该至少对第一张幻灯片起作用,因为变量正在存储第一张幻灯片的 img url 有 .cycle-slide-active 吗? 如果这些类名没有用在页面的其他元素中,一个类就足够了。【参考方案2】:

之前的代码给我带来了问题,我无法让它显示带有.each() 的图像。

使用 for 循环,我能够根据幻灯片编号让该部分使用 URL 作为背景:

var cycleSlide = $('.cycle-slideshow').find('.cycle-slide');
for (i = 0; i < cycleSlide.length; i++)  

    if (cycleSlide.eq(i).hasClass('cycle-slide-active'))
        var apimglink = $('.tes-image-links').children('li').eq(i).text();
        apimglink = apimglink.replace("http://localhost", "");
        $('.ap-testimonial').css('background-image', 'url(' + apimglink + ')');
        console.log(apimglink);

     //End If

; //End For

感谢大家的帮助。

【讨论】:

以上是关于我需要帮助使用 jQuery 切换背景图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 在多个背景图像之间切换的更好方法

在画布上绘制背景图像并保存图像

可以使用 jQuery 的动画移动 HTML 背景吗?

如何为背景图像添加背景颜色? [复制]

表头背景图像和排序箭头图像

如何使用背景图像切换背景颜色[重复]