1

我希望这段代码只会更改最后一个 div (Div5) 上的文本,但它不会:

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $(".blue", "#Div5").text("Hello");
    });
</script>

<form id="form1" runat="server">
<div>

    <div id="Div1" class="blue">AAAA</div>
    <div id="Div2" class="yellow">BBBB</div>
    <div id="Div3" class="blue">CCCC</div>
    <div id="Div4" class="yellow">DDDD</div>
    <div id="Div5" class="blue">EEEE</div>

</div>
</form>

有人碰巧知道出了什么问题吗?

4

7 回答 7

1

那是在 div 中寻找 .blue ,并且在语义上等同于

$("#Div5").find(".blue").text("Hello");

你要:

$("#Div5.blue").text("Hello");

...相当于:

if ($("#Div5").hasClass("blue")) {
    $("#Div5").text("Hello");
}
于 2012-05-21T12:16:00.220 回答
0

可能是这样?

$("#Div5").text("Hello");
于 2012-05-21T12:16:05.197 回答
0

上下文用于指定容器元素。在您的示例中,您在上下文中引用与选择器相同的元素。

您可以简化为:

$("#Div5").text("Hello");

或者,如果您仍想显式指定类:

$("#Div5.blue").text("Hello");

两者都会有相同的结果。

于 2012-05-21T12:16:06.913 回答
0

在这种情况下,您不能使用上下文(即容器)。你应该像这样定位你的元素:

$("#Div5.blue");
于 2012-05-21T12:16:09.143 回答
0

你只需要

$(document).ready(function() {
    $("#Div5").text("Hello");
});

您尝试做的是在ID 为“Div5”的标签中找到一个带有类的标签blue 由于没有嵌套的 div,因此它不起作用。

于 2012-05-21T12:16:19.197 回答
0

这不是上下文选择器,因为它们都是 html 中的相同元素

 $(".blue", "#Div5")

表示选择 #div5 的子项 .blue 项

所以那个html是

<div id="div5">
<div class="blue"></div>
</div>

你只需要 $('#div5").text('text');

于 2012-05-21T12:16:41.467 回答
0

我认为 context 参数必须是一个 jQuery 对象,或者至少是一个 HTMLDOMElement (或者它们被称为的任何东西。:P)

jQuery(document).ready(function(){
    var $contextElement = jQuery("#Div5");
    jQuery(".blue", $contextElement).text("Hello");
});

不过,从您的标记来看,我想说您根本不想使用上下文,而只是选择器,如下所示:

jQuery("#Div5").text("woop woop!");

您甚至不需要定位blue类,因为 ID 是唯一的。事实上,即使你有两个 ID 为Div5jQuery 的元素,也只会返回一个,即第一个。

于 2012-05-21T12:19:01.407 回答