现在的位置: 首页 > 综合 > 正文

第2章 选择元素

2017年11月26日 ⁄ 综合 ⁄ 共 3762字 ⁄ 字号 评论关闭

index.html

<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Selected Shakespeare Plays</title>

    <link rel="stylesheet" href="02.css" type="text/css" />

    <script src="jquery.js"></script>
    <script src="02.js"></script>
  </head>
  <body>
    <div id="container">
      <h2>Selected Shakespeare Plays</h2>
      <ul id="selected-plays" class="clear-after">
        <li>Comedies
          <ul>
            <li><a href="/asyoulikeit/">As You Like It</a></li>
            <li>All's Well That Ends Well</li>
            <li>A Midsummer Night's Dream</li>
            <li>Twelfth Night</li>
          </ul>
        </li>
        <li>Tragedies
          <ul>
            <li><a href="hamlet.pdf">Hamlet</a></li>
            <li>Macbeth</li>
            <li>Romeo and Juliet</li>
          </ul>
        </li>
        <li>Histories
          <ul>
            <li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
              <ul>
                <li>Part I</li>
                <li>Part II</li>
              </ul>
            </li>
            <li><a href="http://www.shakespeare.co.uk/henryv.htm">Henry V</a></li>
            <li>Richard II</li>
          </ul>
        </li>
      </ul>

      <h2>Shakespeare's Plays</h2>
      <table>
        <tr>
          <td>As You Like It</td>
          <td>Comedy</td>
          <td></td>
        </tr>
        <tr>
          <td>All's Well that Ends Well</td>
          <td>Comedy</td>
          <td>1601</td>
        </tr>
        <tr>
          <td>Hamlet</td>
          <td>Tragedy</td>
          <td>1604</td>
        </tr>
        <tr>
          <td>Macbeth</td>
          <td>Tragedy</td>
          <td>1606</td>
        </tr>
        <tr>
          <td>Romeo and Juliet</td>
          <td>Tragedy</td>
          <td>1595</td>
        </tr>
        <tr>
          <td>Henry IV, Part I</td>
          <td>History</td>
          <td>1596</td>
        </tr>
        <tr>
          <td>Henry V</td>
          <td>History</td>
          <td>1599</td>
        </tr>
      </table>
      <h2>Shakespeare's Sonnets</h2>
      <table>
        <tr>
          <td>The Fair Youth</td>
          <td>1–126</td>
        </tr>
        <tr>
          <td>The Dark Lady</td>
          <td>127–152</td>
        </tr>
        <tr>
          <td>The Rival Poet</td>
          <td>78–86</td>
        </tr>
      </table>
    </div>
  </body>
</html>

02.css

/***************************************
   Default Styles
************************************** */

html, body {
  margin: 0;
  padding: 0;
}

body {
  font: 62.5% Verdana, Helvetica, Arial, sans-serif;
  color: #000;
  background: #fff;
}
#container {
  font-size: 1.2em;
  margin: 10px 2em;
}

h1 {
  font-size: 2.5em;
  margin-bottom: 0;
}

h2 {
  font-size: 1.3em;
  margin-bottom: .5em;
}
h3 {
  font-size: 1.1em;
  margin-bottom: 0;
}

code {
  font-size: 1.2em;
}

a {
  color: #06581f;
}


/***************************************
   Chapter Styles
************************************** */

h2 {
  clear: left;
}
li {
  padding: 0 3px;
  color: #000;
}
.horizontal {
  float: left;
  list-style: none;
  margin: 10px;
}
.sub-level {
  background: #ccc;
}
a {
  color: #00c;
}
a.mailto {
  background: url(images/email.png) no-repeat 100% 2px;
  padding-right: 18px;
}
a.pdflink {
  background: url(images/pdf.png) no-repeat 100% 0;
  padding-right: 18px;
}
a.henrylink {
  background-color: #fff;
  padding: 2px;
  border: 1px solid #000;
}
a.external {
  background: #fff url(images/external.png) no-repeat 100% 2px;
  padding-right: 16px;
}
ul.tragedy {
  border: 1px solid #999;
}
li.afterlink {
  border-right: 4px solid #090;
}
table {
  border-collapse: collapse;
}
th, td {
  text-align: left;
  padding: 2px 4px;
}
.table-heading {
  background-color: #000;
  color: #fff;
}

.alt {
  background-color: #ccc;
}

.highlight {
  font-weight: bold;
  font-style: italic;
}

.italic {
  font-style: italic;
}
.bold {
  font-weight: bold;
}

.special {
  color: #f00;
}
.year {
  background-color: #888;
  color: #fff;
  padding: 0 10px;
  text-align: center;
}

02.js

$(document).ready(function() {
	$('#selected-plays >li').addClass('horizontal');
	$('#selected-plays li:not(.horizontal)').addClass('sub-level');
});
$(document).ready(function() {
	$('a[href^="mailto:"]').addClass('mailto');
	$('a[href$=".pdf"]').addClass('pdflink');
	$('a[href^="http"][href*="henry"]').addClass('henrylink');
});

练习:

(1)给位于嵌套列表第二个层次的所有<li>元素加special类;

(2)给位于表格第三列的所有单元格添加year类;

(3)为表格中包含文本Tragedy的第一行添加special类;

(4)挑战:选择包含链接(<a>)的所有列表项(<li>元素),为每个选中的列表项的同辈列表项元素添加afterlink类;

(5)挑战:为与.pdf链接最近的祖先元素<ul>添加tragedy类。

//取得id="selected-plays"的直接子元素li,直接子元素li的直接子元素ul,直接子元素ul的直接子元素li;
$('#selected-plays > li > ul > li')
.addClass('special');

//取得所有table的第三列
$('td:nth-child(3)')
.addClass('year');

$('td:contains(Tragedy)')  //取得包含Henry的所有单元格
.parent()  //取得它的父元素
.eq(0)  //取得第一个父元素
.addClass('special');


$('li > a')  //取得li中包含的所有链接(<a>)
.parent()  //取得a链接的父元素li
.siblings() //取得li元素的同辈元素(不包括自己)
.addClass('afterlink');

$('ul > li > a[href$=".pdf"]')  //选择ul的直接子元素li,li的直接子元.pdf链接
.parent()
.parent()
.addClass('tragedy');

抱歉!评论已关闭.