在前面学习了隐藏显示,以便根据需要来显示页面的内容,可以看到页面上有三个按钮,当按下这三个按钮时,就可以处理为三种不同的CSS样式,从而显示内容不一样。当我们把三个按钮的事件作响应时,是绑定三个响应事件的函数,还是只绑定一个函数呢?这里选择只绑定一个事件响应函数,那么这个函数只有一个,怎么样来区分三个不同的按钮呢?如果熟悉响应的函数,可以看到它长得这个样子:
$('#switcher').click(function(event) {
在这个点击函数click里,可以看到传递了一个函数对象,这个对象有一个参数event,因此不同的按钮的区分,就要从这个event参数来作文章。可以从文档里看到event事件对象,一般有下面公共属性:
target  返回最初触发事件的DOM元素。
relatedTarget  用于返回当前事件涉及到的其他DOM元素,如果有的话。
pageX 获取鼠标当前相对于页面的坐标,可以确定元素在当前页面的坐标值,是以页面为参考点,不随滑动条移动而变化
pageY 获取鼠标当前相对于页面的坐标,可以确定元素在当前页面的坐标值,是以页面为参考点,不随滑动条移动而变化
which 获取在鼠标单击事件中鼠标的左、中、右键(左键1,中间键2,右键3),在键盘事件中键盘的键码值
metaKey  用于指示事件触发时是否按下了Meta键。



从上面属性里,可以看到target,就可以说明点击的来源,因此通过个属性就可以获取到哪一个按钮被点击的。当然,为了确认是那一个更具体的按钮,就得获取按钮的名称了,从前面的HTML里可以看到它们定义如下:

<button id="switcher-default"> 

          默认 

        </button> 

        <button id="switcher-narrow"> 

          一般显示 

        </button> 

        <button id="switcher-large"> 

          大号显示 

        </button>


从上面定义可以看出,这里的id是经过精心安排的,把每个id使用横线分隔成两段,比如"switcher-default"可以很容易分开成switcher、default,这需要使用String对象的split() 方法,用于把一个字符串分割成字符串数组。
综合上面的知识点,就可把按钮的点击响应函数写成下面的样子:

<html>
  <head>
    <meta charset="utf-8">
    <title>文章显示系统</title>
     <link rel="stylesheet" href="page/page.css" type="text/css" />
     <script type="text/JavaScript" src="jquery/jquery-3.3.1.js"></script>
     <script>
       $(document).ready(function(){
         //鼠标位置在切换窗口上显示不同的颜色
         $('#switcher').hover(
           function(){ $(this).addClass('hover');    },
           function(){ $(this).removeClass('hover'); }
         );

         // 隐藏按钮,缩小显示位置
         var toggleSwitcher = function(event) {
           if (!$(event.target).is('button')) {
             $('#switcher button').toggleClass('hidden');
           }
         };
         $('#switcher').on('click', toggleSwitcher);

         // 模拟一次点击,让它在收缩状态
         $('#switcher').click();
         //按钮的事件响应
         $('#switcher').click(function(event) {
           if ($(event.target).is('button')) {
             var bodyClass = event.target.id.split('-')[1];
             console.log(bodyClass);
           }
         });

       });
     </script>
  </head>
  <body>
    <div id="container">
      <div id="switcher" class="switcher">
        <h3>页面布局选择</h3>
        <button id="switcher-default">
          默认
        </button>
        <button id="switcher-narrow">
          一般显示
        </button>
        <button id="switcher-large">
          大号显示
        </button>
      </div>
    </div>
    <span></span>
  </body>
</html>