2009-11-19 137 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")