当前位置: 首页 > 知识库问答 >
问题:

如何嵌套多个键控事件?

韦衡
2023-03-14

我的总体目标是能够使用TAB键在3个div之间导航,每个div都有#sectionA、#sectionB和#sectionC的CSS id。在每个div中,我有一个无序列表,我想使用左右箭头键来浏览列表。

我的超文本标记语言如下:

               <div id="sectionA">
            <ul id="ul_sectionA">
                    <li> Section A -  Test B</li>
                    <li> Section A -  Test B</li>
            </ul>
    </div>
    <div id="sectionB">
            <ul id="ul_sectionB">
                    <li> Section B -  Test B</li>
                    <li> Section B -  Test B</li>
            </ul>
    </div>
            <div id="sectionC">
            <ul id="ul_sectionC">
                    <li> Section C -  Test B</li>
                    <li> Section C -  Test B</li>
            </ul>
    </div>   

到目前为止,我能够得到以下jquery代码,但一旦我添加了第二个$(文档). keydown(函数()代码,就无法工作。

  $(document).ready(function()
    {
        var divs = ["sectionA","sectionB","sectionC"];
        var startIndex = 0;

        $(document).keydown(function(e)
        {
            alert("test");
                if (e.which == 9)
            {
                 $("div").css("border", "");
                    $("#"+divs[startIndex]).css("border","1px solid blue");
                var divID = $("#" +divs[startIndex]).attr("id");
                $(document).keydown(function(event)
                {
                    if(event.which == 37)
                    {
                        if("#"+divID+"ul li").addClass() == "highlight")
                        {
                            $(this).next().addClass("highlight");
                        } else
                        {
                            $(this).addClass();   
                        }
                    }
                });
                startIndex++;

                    if(startIndex === divs.length)
                    {
                            startIndex = 0;                  
                    }
                }
        });
    });    

共有1个答案

上官迪
2023-03-14

希望这能让你朝着正确的方向前进。无论如何,它都不是完美的。

您遇到的基本问题是试图嵌套一个keydown事件。你不能这么做。取而代之的是,您需要为左右箭头创建一个单独的keydown事件,这些事件中的每一个都需要计算出用户“选择”了哪个div,然后在该div中滚动这些列表项。下面的代码将启动这个过程,但是它只处理左箭头,甚至还没有完成。

  <script type="text/javascript">
    $(document).ready(function()
    {
        var divs = ["sectionA","sectionB","sectionC"];
        var startIndex = 0;
        var startListItemIndex = 0;
        var divID;
        $(document).keydown(function(e)
        {
            if (e.which == 9)
            {

              $("div").css("border", "");

              $("#" + divID + " ul li").css("border", "0px"); //remove all borders 
              $("#"+divs[startIndex]).css("border","1px solid blue"); //now add border to selected div
              divID = $("#" +divs[startIndex]).attr("id");

              startListItemIndex = 0; //reset startIndex each time tab is pressed. 
              startIndex++;

              if(startIndex === divs.length)
              {
                      startIndex = 0;                  
              }

            }
              //left arrow click
              if(event.which == 37)
              {
                startListItemIndex++; 

                //remove all highlights first
                 $("#" + divID + " ul li").removeClass("highlight");

                //now add highlight to the next li element. 
                $("#" + divID + " ul li:nth-child(" + startListItemIndex + ")").addClass("highlight"); 
               }
        });


    });   
  </script>
 类似资料:
  • 我的数据流来自一个定制的SourceFunction,它以确定性的顺序发出窗口大小的字符串序列。其目的是基于EventTime在keyedstream上创建滑动窗口,以便对累积的字符串进行处理。为了分配EventTime和水印,我将一个带有PeriodicWatermarks的赋值器附加到流。滑动窗口使用自定义ProcessWindowFunction进行处理。 My AssignerWithPe

  • 多层组件嵌套button,如何阻止事件传递

  • 我的数据存储在DynamoDB中的单个表“events”中,在下面的模式中,“_id”作为哈希键,“microtime”作为范围键(下面的示例数据):

  • 问题内容: 我有正在使用nodeJS读取的csv文件。我在阅读之前将每个文件转换为文本。 文件中的每一行都有以’=’分隔的数据。 每行看起来像 “ =“之前的第一部分代表我应用程序中json对象的索引。我的目的是解析此数据并为其构建json表示,以便上面的行成为 使用javascript / node js; 如何将应该表示嵌套JSON键序列的字符串转换为上述json对象? 问题答案: 您可以分割

  • 问题内容: 我在下面的对象中尝试获取所有id值。 使用以下代码,我仅获得第一个id值。有没有办法从嵌套对象中获取所有id值,而无需使用任何外部模块。 预期产量 问题答案: 您可以使用如下所示的JavaScript函数来获取嵌套属性: 检查此小提琴以获取可行的解决方案。

  • 我使用以下代码从URL下载JSON文件: 这正确地获取了代码,但是我在获取第一级数据时遇到了问题,我可以使用并按预期工作,但我无法执行。 JSON文件可以在这里找到。 这里是JSON美化。 我想随机得到一个我不知道孩子数量的孩子。类似于 编辑: 我真的需要一个简单的解决方案,从一个随机的孩子那里得到一些参数。 我需要得到JSON- 有人能给我看一个基本的工作例子,给我一个我可以修改的最终值吗?