我有以下HTML:
<div id="123" class="test">
<div class="testMessage">Foo</div>
<div><div class="testDate">2010</div></div>
<div id="127" class="test">
<div class="testMessage">Bar</div>
<div><div class="testDate">2011</div></div>
</div>
</div>
我有以下JS / jQuery代码:
$(".test").find(".testDate").val("cool 2010");
如何更改JS / jQuery以查找“testDate”类元素,除了在子项“test”类块中而不使用子项?
P.S。我只知道类名,我不知道可以嵌套多少个div。
答案 0 :(得分:3)
<强>更新强>
它可能是我写过的最奇怪的选择器:
$("div.test").not(':has(> .test)').siblings().find('.testDate').text('cool 2010');
演示:http://jsfiddle.net/mrchief/6cbdu/3/
说明:
$("div.test") // finds both the test divs
.not(':has(> .test)') // finds the inner test div
.siblings() // get all other divs except the inner test div
答案 1 :(得分:2)
试试这个并且div元素也没有value属性,使用html()
方法设置内部html或text()
$("div.test :not(.test)").find(".testDate").html("cool 2010");
如果您可以将主div ID修改为“_123”,您可以立即使用这样的id选择器
$("#_123 > div.testDate").html("cool 2010");
答案 2 :(得分:1)
我认为not()选择器可能有所帮助。您可以在此处了解详情:http://jsperf.com/jquery-css3-not-vs-not
答案 3 :(得分:0)
无论何时尝试选择$('。test'),它都会使用class ='test'获取所有元素。你需要从最外层的身体标签开始:
$('body').children('.test').children(':not(.test)').find('.testDate').text('cool 2010');