jQuery Selector用于元素的所有后代

时间:2011-11-20 09:58:36

标签: jquery css jquery-selectors

我有一个<div id="rptViewer">,它有多个div和表,而这些表又有多个div和表。 我需要一个jQuery选择器来直接或间接地选择“rptViewer”下的所有div或表(嵌套)。

我正在尝试以下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>

但是当我使用firebug进行检查时,我发现只有'rptViewer'的直接子项才会获得'inline-block'CSS

2 个答案:

答案 0 :(得分:4)

如果您想在rptViewer中包含所有table和div的类。 你可以这样做:

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

但是如果你想只为rptViewer的真正孩子提供一个类。 你可以这样做:

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

答案 1 :(得分:1)

不是在JavaScript中添加样式,而是通过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')...