Jquery找到所有除外

时间:2011-08-18 17:15:54

标签: javascript jquery

我有以下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。

4 个答案:

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