2011-11-20 84 views
1

我有一個<div id="rptViewer">,它有多個div和表,而這些div和表又可以有多個div和表。 我需要一個jQuery選擇器來直接或間接(嵌套)選擇「rptViewer」下的所有div或表。針對元素的所有後代的jQuery選擇器

我想下面的jQuery選擇器。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("[id*='rptViewer'] table").each(function(i, item) { 
      $(item).css('display', 'inline-block'); 
      }); 
      $("[id*='rptViewer'] div").each(function(i, item) { 
       $(item).css('display', 'inline-block'); 
      });    

      $("[id*=rptViewer] table").attr("width",""); 
     }); 
    </script> 

但是,當我使用螢火檢查它,我發現只有「rptViewer」的直接孩子都在JavaScript中添加樣式越來越「inline-block的」 CSS

+1

'[id * ='rptViewer'] div' should work。看到這個小提琴並檢查輸出(3'div'元素):http://jsfiddle.net/NYmpv/ –

+0

在演示中,我做了很好的工作http://jsfiddle.net/v8tnR/ – Sotiris

+1

你可以給我們HTML用它?如果可能的話,使用jsfiddle.net來顯示你的問題,這將更容易幫助你;) – fflorent

回答

4

如果您想要包含所有類表和div裏面的rptViewer。 你可以這樣說:

$("table, div", "#rptViewer").addClass('someStyle'); 

但是,如果你想有一個類只爲rptViewer的真兒。 你可以這樣做:

$("#rptViewer > table, #rptViewer > div").addClass('someStyle'); 
+1

在這兩種情況下都不需要使用jQuery的每種方法。直接在任一選擇器上調用addClass。 – JesseBuesking

+0

雖然這個被接受的答案可能對於所描述的問題是正確的,但問題的標題是不同的:「元素的所有後代的jQuery選擇器」。現在的答案就是使用通配符astericks選擇器$('element *')。 – matths

1

相反,通過添加樣式CSS:

#rptViewer div, 
#rptViewer table { 
    display: inline-block; 
} 

可以使用[id]選擇,和選擇的一個逗號分隔的列表:

$('#rptViewer div, #rptViewer table')... 

如果有更多你想選擇的元素,你可能想使用.find()

$('#rptViewer').find('div, table')... 

假設你使用rptViewer[id],我要去假設您使用的是ASP.NET,在這種情況下,您應該向元素添加一個類以簡化選擇:

$('.viewer').find('div, table')...