如果ID有类,则设置另一个元素的属性

时间:2012-03-07 07:32:37

标签: javascript jquery

我正在尝试检测是否存在类,如果存在,则设置另一个元素的背景属性。这就是我所拥有的,但它不起作用。

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指定三种可能的类。因此,每次幻灯片更改时我都需要使用脚本进行评估。

有什么想法吗?谢谢大家!

3 个答案:

答案 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()
    });
}

Here is a working example.

答案 2 :(得分:1)

试试这个

jQuery("#home-middle-first").css("background-image","url([path])");