jquery - 如何使选定的 LI 保持可见(不隐藏)?

标签 jquery html css html-lists

我正在使用 jQuery 1.12。我有一个带 LI 元素的样式化 UL。当 DIV 具有焦点时,我使用下面的代码使用键盘上的向上或向下箭头选择这些元素 ...

 $(".select").bind('keydown', function(event) {
    var currentElement = $(this).find(".select-options li.selected");
    if (currentElement.length == 0) {
        currentElement = $(this).find(".select-options li")[0];
      $(currentElement).addClass("selected");
      return;
    }       // if
    var nextElement;
    switch(event.keyCode){
    // case up
    case 38:
        nextElement = $(this).find(".select-options li")[($(this).find(".select-options li").index(currentElement) - 1) % $(this).find(".select-options li").length];
        break;
    case 40:
        nextElement = $(this).find(".select-options li")[($(this).find(".select-options li").index(currentElement) + 1) % $(this).find(".select-options li").length];
      break;
    }
    $(this).find(".select-options li").removeClass("selected");
    if(nextElement !== null) {
        $(nextElement).addClass("selected");
    }
 });

问题是,如果您连续点击向下键(例如),最终您将无法看到所选元素。我该如何调整以使所选元素始终可见?说明问题的 fiddle 在这里 -- http://jsfiddle.net/sge8g5qu/1/ .

最佳答案

在将类添加到 nextElement 调用的末尾 .scrollIntoView( false )也在上面。

if(nextElement !== null) {
    $(nextElement).addClass("selected");
    nextElement.scrollIntoView(false); // added this line
}

更新 fiddle :http://jsfiddle.net/gaby/6fjnnu55/

关于jquery - 如何使选定的 LI 保持可见(不隐藏)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446096/

相关文章:

javascript - Backbone.js:单击 U.I 列表元素以将它们显示在页面的不同部分

javascript - 与复选框对话,将检查值传递到空选择框

php - 在 jQuery 中插入 HTML 换行符?

html - 网站在手机上太宽

html - 创建两个重叠 DIV 的按钮

Jquery 隐藏和显示图像 - 切换功能

html - 设置位置为 top 的拉伸(stretch)背景图像

javascript - Openlayers3 标记未显示在操作系统 map 上

javascript - 选中/取消选中单选框后向 div 添加/删除一些文本

css - 仅在 IE9 浏览器中将 ajax 获取的数据馈送到表中的单元格之间显示的空白区域(或空白区域),