在标头中显示特定数据

时间:2012-05-12 23:57:13

标签: jquery html drop-down-menu

我正在创建一个小网站,允许用户浏览一些莎士比亚戏剧。我有它的工作,当用户点击播放时,播放的名称显示在标题中,播放的脚本显示在一个单独的div中。

这工作正常,但我现在正尝试将各种游戏组织到一个下拉菜单中。我将戏剧分为两类(喜剧和历史),并相应地对戏剧进行分组。

我现在遇到的问题是,一旦我通过下拉菜单点击了一个游戏,该标题中的整个游戏列表(即喜剧)将显示在标题中,而不是仅显示我选择的游戏。然而,我选择的游戏仍然在显示游戏的div中正确显示('mainOutput'div)。

基本上我需要知道的是如何设置下拉菜单,以便只有我选择的播放标题显示在标题中。希望我已经正确解释了这一点,任何帮助将不胜感激!这是我的代码......

启动播放的jquery显示:

  $(document).ready(function(){   /* The code here can be modified to allow for any means of obtaining playName */
    $('li').click(function(event) {
  var playName = $(this).attr("id");
      $("header>span").text($(this).text());
      loadPlay(playName);
    });         

下拉菜单:

<div style="margin-left:50px;">
    <ul id="menu">
        <li><a href="#">Comedies</a>
            <ul id="help">
                <li>
                    <img class="corner_inset_left" alt="" src="corner_inset_left.png"/>
                    <li id="all_well.xml" class="comedy">All's Well That Ends Well</li>
                    <img class="corner_inset_right" alt="" src="corner_inset_right.png"/>
                </li>
                </ br>
                <li id="as_you.xml" class="comedy">As You Like It</li> </ br>
                <li id="com_err.xml" class="comedy">The Comedy of Errors</li> </ br>
              <li id="cymbelin.xml" class="comedy">Cymbeline</li> </ br>
              <li id="lll.xml" class="comedy">Love's Labours Lost</li> 
              <li id="m_for_m.xml" class="comedy">Measure for Measure</li> 
                          <li class="last">
                </li>
            </ul>
        </li>
        <li><a href="#">Histories</a>
            <ul id="help">
                <li>
                    <img class="corner_inset_left" alt="" src="corner_inset_left.png"/>
                     <li id="hen_iv_1.xml" class="history">Henry IV, Part I</li>                                                                        <img class="corner_inset_right" alt="" src="corner_inset_right.png"/>
                </li>
          <li id="hen_iv_2.xml" class="history">Henry IV, Part II</li> 
          <li id="hen_v.xml" class="history">Henry V</li> 
          <li id="hen_vi_1.xml" class="history">Henry VI, Part I</li> 
          <li id="rich_iii.xml" class="history">Richard III</li>
                <li class="last">
                </li>
            </ul>
        </li>
        </div>

显示播放数据的位置:

<header><span>Shakespeare's Plays<span></span></span></header>

1 个答案:

答案 0 :(得分:1)

这是因为您将click事件绑定到所有li项,包括下拉列表标题。您可以更改选择器以使其可用。

$(document).ready(function() {
    $('#menu ul li').click(function(event) {
        var playName = $(this).attr("id");
        $("header > span").text($(this).text());
        loadPlay(playName);
    });
});

当然,您的代码中还有许多其他问题。

  1. 您应该改进元素的ID(例如,您有几个ID为help的元素,应该只有一个)。
  2. 列表元素ul应仅包含第一个子li元素(您还有br个元素,不正确。)
  3. 请注意,span中有两个header个元素。如果您希望用文本填充它,请考虑仅使用一个(请参阅JavaScript)。