2009-11-19 134 views
0

有一个HTML结构:我如何访问内部span标签jQuery的

  <div class="mydiv">xx 
       <span>test1</span> 
       <span>test2</span> 
       <div class="inerdiv"> 
       <span>inner span</span> 
       </div> 
       </div> 
      <span>test3</span> 

现在我想将样式应用到其中包含的“内跨越”的跨度。

$(function() { 
     $(".mydiv").click(function() { 

      $(".mydiv").next().find("span").css("border", "1px solid yellow");//not working 
     }); 
    }); 

什么应该是正确的代码?

+0

Dup? http://stackoverflow.com/questions/1606629/how-to-aceess-span-directly-using-jquery/1606637#1606637 – moxn 2009-11-19 11:48:00

回答

3

替换:

$(".mydiv").next().find("span").css("border", "1px solid yellow"); 

有了:

$(".mydiv .innerdiv span").css("border", "1px solid yellow"); 

我不认为next()做什么,你认为它。

next()返回所有先前匹配元素的直接下一个兄弟。

鉴于标记:

<div class="hello">foo1</div><span>bar1</span> 
<div class="goodbye">foo2</div><span>bar2</span> 
<div class="hello">foo3</div><span>bar3</span> 

下将返回span元素包含bar1bar3

$("div.hello").next() 

因此,有没有办法让使用next()div<div class="innerdiv">,因为他们不是兄弟姐妹。

+0

同意。但有没有办法与next()和find()? 没有特别的原因,只是想知道。 – Wondering 2009-11-19 11:51:57

+0

@Wondering - 在解释中编辑。 – 2009-11-19 12:02:37

+0

谢谢,例如。 – Wondering 2009-11-19 12:33:56

0
$(function() { 
    $(".mydiv").click(function() { 

     $(".innerdiv span", this).css("border", "1px solid yellow"); 
    }); 
}); 
0
$ (.mydiv .inerdiv span:contains('inner span')).css("border", "1px solid yellow")