为什么我不能使用jQuery设置di​​v背景?

时间:2015-02-17 05:39:15

标签: jquery html

我是网络编程和jQuery的新手。

目的:
我尝试使用以下代码将div背景设置为红色,但它失败了。

$(stepBox).find(".image").css('background-color', 'red');

我可以知道这是什么问题吗?

<!DOCTYPE html>
<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>  

    <script>
        $(document).ready(function() {

            var stepBox = "<div class='step' id='1'>"
                        + "    <div class='summary'>summary</div>"
                        + "    <div class='image'>image</div>"
                        + "</div>";

            $(".steps").append(stepBox);

            $(stepBox).find(".image").css('background-color', 'red');
        });
    </script>
</head>

<body>
    <div class="steps">

    </div>
</body>
</html>

解决:

将其更改为(添加$ sign)

var stepBox = $("<div class='step' id='1'>"
             + "    <div class='summary'>summary</div>"
             + "    <div class='image'>image</div>"
             + "</div>");

谢谢你们。

@Abovestand  upvote (I get the point and convert string to object)       
@JanR  mark as answer  (first response)      
@Pratik Thakkar  upvote (alternative method)       

进一步的信息,因为“步骤”可能有很多“步骤”,所以我更喜欢操作属于“stepBox”中“step”的“image”。

$('.step .image').css('background-color', 'red');也应该可行。 (@Pratik Thakkar)

3 个答案:

答案 0 :(得分:1)

变量“stepBox”是一个字符串。 jQuery需要对元素的引用。这将有效:

 $(".steps").find(".image").css('background-color', 'red');

编辑:

回应你的评论,是的。要从字符串创建jQuery元素,您可以执行以下操作:

var stepBoxEle = $.parseHTML(stepbox)[0];

不幸的是,将stepBoxEle附加到页面只会复制它,因此之后编辑它不会改变页面上的内容。您可以在追加之前编辑stepBoxEle,例如:

$(stepBoxEle).find(".image").css('background-color', 'red');
$(".steps").append(stepBoxEle);

答案 1 :(得分:1)

以下代码应该可以正常运行。您需要做的就是使用类.step

选择div中的.image类
$('.step .image').css('background-color', 'red');

如果你想要所有带有&#34; .image&#34;类的元素,你可以交替使用下面的代码。在div中使用class .steps

$('.steps .image').css('background-color', 'red');

请参阅下面的小提琴链接 http://jsfiddle.net/yxzrut2q/

答案 2 :(得分:0)

问题在于这一行:

$(stepBox).find(".image").css('background-color', 'red');

根据.find()文档:获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素过滤。这基本上意味着搜索与搜索匹配的任何子对象的当前对象。但是stepBox不是jquery对象或元素。

您想将其更改为:

$(".steps").find(".image").css('background-color', 'red');

小提琴:

http://jsfiddle.net/t7b84bsg/