我正在尝试检测是否存在类,如果存在,则设置另一个元素的背景属性。这就是我所拥有的,但它不起作用。
if(jQuery("#slider-banner").hasClass('living-nutrients'))
{
jQuery("#home-middle-first").css("background-image","[path to new background image]");
}
BTW - 我的下一步是在ID“slider-banner”改变时检测它,但到目前为止我甚至无法在页面加载时使其工作一次。任何帮助将不胜感激...谢谢!
编辑:我按照说明从.attr更改为.css。有道理......但仍然无法正常工作。我已经尝试在IF语句中添加console.log消息,也没有得到任何结果。这会给任何人更多的想法吗?
类更改的示例HTML:
<img id="slider-banner" class="living-nutrients" src="[image path]">
我要更改背景图片的示例HTML:
<div class="home-middle-one-third" id="home-middle-first">
<a href="#"></a>
</div>
更新
对于那些说“应该工作”的人来说......你是对的!事实证明,正如所写,它不喜欢在页面的页脚,但当我把它移到头部,presto!
这个难题的最后一部分是根据#slip-banner更改(或更准确地说,ID'd区域存在哪个类)来检测和评估,而不仅仅是页面加载,而不是目前。
ID用于滑块内幻灯片的一个元素。根据哪个幻灯片可见,我可以为ID指定三种可能的类。因此,每次幻灯片更改时我都需要使用脚本进行评估。
有什么想法吗?谢谢大家!
答案 0 :(得分:5)
background-image
是元素的样式属性,而不是它自己的属性。
所以.css("background-image","[path to new background image]");
答案 1 :(得分:2)
几乎!
if(jQuery("#slider-banner").hasClass('living-nutrients'))
{
jQuery("#home-middle-first").css("background-image","[path to new background image]");
}
css
是设置CSS属性的正确函数
attr
将设置HTML属性。 <div attr='attr value'>
修改强>
我在下面的例子中猜测你的脚本的功能
当您设置HTML节点的background-image
时,它所做的就是设置背景图像。您还必须相应地设置宽度和高度,使所有节点足够大,甚至可以看到节点的背景。背景图像不会自动调整节点大小。
var slider = jQuery("#slider-banner"); // jQuery("#slider-banner") is slow, so we save it to a var if we use it more than once
console.log(slider); // should be this in Chrome: [<img id="slider-banner" class="living-nutrients" src="[image path]">]
if(slider.hasClass('living-nutrients'))
{
jQuery("#home-middle-first").css({
"background-image":"url("+slider.attr('src')+")", // url() for good meassures
//"background-image":slider.css('background-image'), //try this if that doesn't work
"height":slider.height(),
"width":slider.width()
});
}
答案 2 :(得分:1)
试试这个
jQuery("#home-middle-first").css("background-image","url([path])");