Das Selektions-Set auf ein bestimmtes Element reduzieren

Problem

Ein jQuery-Selektor ist recht umfassend und selektiert abhängig von Ihrer Abfrage alle möglichen Elemente auf der Seite. Es kann notwendig sein, ein einzelnes Element in Abhängigkeit von seiner Position auszuwählen.

Lösung

Nachdem Sie Ihre Selektion mit jQuery durchgeführt haben, können Sie die Methode .eq() verketten und den Index des gewünschten Elements übergeben.


Note

Der Selektions-Index beginnt bei Null, daher ist das erste Element in der Selektion $().eq(0);. $().eq(4); steht demzufolge für das fünfte Element.


Lassen Sie uns die Abschlusstabellen der National Hockey League (NHL) Conferences als Beispiel dafür nutzen, wie man zeigen kann, welche Teams es in die Playoffs geschafft haben und welche nicht. Wir müssen dazu alle Teams in jeder Conference in der Tabellen-Reihenfolge aufführen. Da die obersten acht Teams jeder Conference in die Playoff-Runde gelangen, müssen wir nur den achten Eintrag jeder Liste bestimmen und dort eine Linie ziehen:

<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>Kapitel 3 - Rezept 2 - Reduzieren des Selektions-Sets auf ein bestimmtes 
    Element</title>
    <script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        (function($){
            $(document).ready(function(){
                $("ol#east > li").eq(7).css("border-bottom", "1px solid #000000");
                $("ol#west > li").eq(7).css("border-bottom", "1px solid #000000");
            });
        })(jQuery);
    </script>
</head>
<body>
    <h2>Eastern Conference</h2>
    <ol id="east">
        <li>Boston Bruins</li>
        <li>Washington Capitals</li>
        <li>New Jersey Devils</li>
        <li>Pittsburgh Penguins</li>
        <li>Philadelphia Flyers</li>
        <li>Carolina Hurricanes</li>
        <li>New York Rangers</li>
        <li>Montreal Canadians</li>
        <li>Florida Panthers</li>
        <li>Buffalo Sabres</li>
        <li>Ottawa Senators</li>
        <li>Toronto Maple Leafs</li>
        <li>Atlanta Thrashers</li>
        <li>Tampa Bay Lightning</li>
        <li>New York Islanders</li>
    </ol>

    <h2>Western Conference</h2>
    <ol id="west">
        <li>San Jose Sharks</li>
        <li>Detroit Red Wings</li>
        <li>Vancouver Canucks</li>
        <li>Chicago Blackhawks</li>
        <li>Calgary Flames</li>
        <li>St. Louis Blues</li>
        <li>Columbus Blue Jackets</li>
        <li>Anaheim Ducks</li>
        <li>Minnesota Wild</li>
        <li>Nashville Predators</li>
        <li>Edmonton Oilers</li>
        <li>Dallas Stars</li>
        <li>Phoenix Coyotes</li>
        <li>Los Angeles Kings</li>
        <li>Colorado Avalanche</li>
    </ol>
</body>
</html>

Figure 3-2 zeigt das Ergebnis dieses HTML-Codes.

Code-Ausgabe
Figure 3-2. Code-Ausgabe

Wie Sie sehen können, haben wir einfach eine geordnete Liste genutzt, um alle Teams in der Platzierungsreihenfolge auszugeben. Dann haben wir mit jQuery eine Linie unterhalb des achten Elements in jeder Liste ausgegeben. Wir mussten jeder geordneten Liste eine ID hinzufügen, um sie jeweils in einer eigenen Abfrage ansprechen zu können. Hätten wir nur $("li").eq(7); genutzt, wäre nur die erste Liste berücksichtigt worden, weil die Abfrage alle <li>-Elemente auf der Seite gemeinsam durchgezählt hätte.

Diskussion

Die Methode .eq() wird genutzt, um ein Selektions-Set auf ein einzelnes Element aus diesem Set zu reduzieren. Das Argument ist dabei der Index des gewünschten Elements. Dieser beginnt bei 0 und endet bei length −1. Ist das Argument ein ungültiger Index, liefert die Methode nicht null, sondern ein leeres Set zurück.

Die Methode .eq() entspricht der Verwendung von $(":eq()"); direkt in der Selektion, aber mit ihrer Hilfe können Sie auch Verkettungen vornehmen und das Ergebnis besser kontrollieren. Zum Beispiel:

$("li").css("background-color","#CCCCCC").eq(0).css("background-color","#ff0000");

Damit wird die Hintergrundfarbe aller <li>-Elemente geändert und dann das erste ausgewählt und nochmals mit einer anderen Hintergrundfarbe versehen (vielleicht, um es als Überschrift zu kennzeichnen.

JQuery Kochbuch
titlepage.xhtml
part0000.html
part0001.html
part0002_split_000.html
part0002_split_001.html
part0002_split_002.html
part0003_split_000.html
part0003_split_001.html
part0003_split_002.html
part0003_split_003.html
part0003_split_004.html
part0003_split_005.html
part0003_split_006.html
part0003_split_007.html
part0004_split_000.html
part0004_split_001.html
part0004_split_002.html
part0004_split_003.html
part0004_split_004.html
part0004_split_005.html
part0004_split_006.html
part0004_split_007.html
part0004_split_008.html
part0004_split_009.html
part0004_split_010.html
part0004_split_011.html
part0004_split_012.html
part0004_split_013.html
part0004_split_014.html
part0004_split_015.html
part0004_split_016.html
part0004_split_017.html
part0004_split_018.html
part0005_split_000.html
part0005_split_001.html
part0005_split_002.html
part0005_split_003.html
part0005_split_004.html
part0005_split_005.html
part0005_split_006.html
part0005_split_007.html
part0005_split_008.html
part0005_split_009.html
part0005_split_010.html
part0005_split_011.html
part0005_split_012.html
part0005_split_013.html
part0006_split_000.html
part0006_split_001.html
part0006_split_002.html
part0006_split_003.html
part0006_split_004.html
part0006_split_005.html
part0006_split_006.html
part0006_split_007.html
part0006_split_008.html
part0006_split_009.html
part0006_split_010.html
part0007_split_000.html
part0007_split_001.html
part0007_split_002.html
part0007_split_003.html
part0007_split_004.html
part0007_split_005.html
part0007_split_006.html
part0007_split_007.html
part0007_split_008.html
part0007_split_009.html
part0007_split_010.html
part0007_split_011.html
part0008_split_000.html
part0008_split_001.html
part0008_split_002.html
part0008_split_003.html
part0008_split_004.html
part0008_split_005.html
part0008_split_006.html
part0008_split_007.html
part0008_split_008.html
part0008_split_009.html
part0008_split_010.html
part0008_split_011.html
part0008_split_012.html
part0008_split_013.html
part0008_split_014.html
part0008_split_015.html
part0008_split_016.html
part0008_split_017.html
part0008_split_018.html
part0008_split_019.html
part0008_split_020.html
part0008_split_021.html
part0008_split_022.html
part0009_split_000.html
part0009_split_001.html
part0009_split_002.html
part0009_split_003.html
part0009_split_004.html
part0009_split_005.html
part0009_split_006.html
part0009_split_007.html
part0009_split_008.html
part0009_split_009.html
part0009_split_010.html
part0010_split_000.html
part0010_split_001.html
part0010_split_002.html
part0010_split_003.html
part0010_split_004.html
part0010_split_005.html
part0010_split_006.html
part0010_split_007.html
part0010_split_008.html
part0010_split_009.html
part0010_split_010.html
part0010_split_011.html
part0011_split_000.html
part0011_split_001.html
part0011_split_002.html
part0011_split_003.html
part0011_split_004.html
part0011_split_005.html
part0011_split_006.html
part0011_split_007.html
part0011_split_008.html
part0011_split_009.html
part0011_split_010.html
part0011_split_011.html
part0012_split_000.html
part0012_split_001.html
part0012_split_002.html
part0012_split_003.html
part0012_split_004.html
part0012_split_005.html
part0012_split_006.html
part0012_split_007.html
part0012_split_008.html
part0013_split_000.html
part0013_split_001.html
part0013_split_002.html
part0013_split_003.html
part0013_split_004.html
part0013_split_005.html
part0013_split_006.html
part0013_split_007.html
part0013_split_008.html
part0013_split_009.html
part0013_split_010.html
part0013_split_011.html
part0013_split_012.html
part0014_split_000.html
part0014_split_001.html
part0014_split_002.html
part0014_split_003.html
part0014_split_004.html
part0014_split_005.html
part0014_split_006.html
part0014_split_007.html
part0014_split_008.html
part0014_split_009.html
part0014_split_010.html
part0014_split_011.html
part0015_split_000.html
part0015_split_001.html
part0015_split_002.html
part0015_split_003.html
part0015_split_004.html
part0015_split_005.html
part0015_split_006.html
part0015_split_007.html
part0015_split_008.html
part0015_split_009.html
part0015_split_010.html
part0016_split_000.html
part0016_split_001.html
part0016_split_002.html
part0016_split_003.html
part0016_split_004.html
part0016_split_005.html
part0016_split_006.html
part0016_split_007.html
part0016_split_008.html
part0016_split_009.html
part0017_split_000.html
part0017_split_001.html
part0017_split_002.html
part0017_split_003.html
part0017_split_004.html
part0017_split_005.html
part0017_split_006.html
part0017_split_007.html
part0017_split_008.html
part0017_split_009.html
part0017_split_010.html
part0017_split_011.html
part0018_split_000.html
part0018_split_001.html
part0018_split_002.html
part0018_split_003.html
part0018_split_004.html
part0018_split_005.html
part0018_split_006.html
part0019_split_000.html
part0019_split_001.html
part0019_split_002.html
part0019_split_003.html
part0019_split_004.html
part0019_split_005.html
part0019_split_006.html
part0019_split_007.html
part0019_split_008.html
part0019_split_009.html
part0019_split_010.html
part0020_split_000.html
part0020_split_001.html
part0020_split_002.html
part0020_split_003.html
part0020_split_004.html
part0020_split_005.html
part0020_split_006.html
part0020_split_007.html
part0020_split_008.html
part0021_split_000.html
part0021_split_001.html
part0021_split_002.html
part0021_split_003.html
part0021_split_004.html
part0021_split_005.html
part0021_split_006.html
part0021_split_007.html
part0021_split_008.html
part0021_split_009.html
part0022.html
part0023.html
part0024.html
part0025.html