2012-05-21 74 views
1

我希望这个代码将改变只在最后一个div(DIV5)的文本,但它并不:jQuery选择与上下文不工作

<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> 

有谁知道发生了什么问题?

回答

0

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

可以简化为这样:

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

或者,如果你想要明确地指定类:

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

两者都会有同样的结果。

+0

非常感谢你。我是jQuery的初学者。 – tesicg

1

这就是要找的DIV内的.blue和语义上等同于

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

你想:

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

...这相当于:

if ($("#Div5").hasClass("blue")) { 
    $("#Div5").text("Hello"); 
} 
0

也许是这样吗?

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

在这种情况下,您不能使用上下文(即容器)。您应该尽量保证内容是这样的:

$("#Div5.blue"); 
0

你需要简单地

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

你试图做的是找到blue标签内 ID为“DIV5”的标签。由于没有嵌套的div,它不会工作。

0

,因为他们都在你的HTML相同的元素

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

手段选择的.blue项目是#DIV5的孩子

所以HTML的,这不是一个上下文选择将

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

你只需要$('#DIV5" )文本( '文本');

0

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

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

虽然,从您的标记来看,我会说,你不希望使用情境可言,而只是选择,就像这样:

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

你不”因为该ID是唯一的,所以甚至需要定位blue类。实际上,即使您有两个ID为Div5的元素,jQuery也只会返回一个元素,即第一个元素。