突出显示文本后打开下拉菜单

时间:2016-03-31 20:01:34

标签: javascript jquery html css

我在网页上突出显示文字后尝试打开下拉菜单但下拉菜单没有打开。此外,我已将对象转换为字符串,因此当您在窗口中单击但未选择任何文本时它不会打开,我是否应该创建DIV而不是字符串?

HTML:

 <ul class="dropdown-menu" aria-labelledby="dropdownMenu2">
    <li><a href="#">comment</a></li>
    <li><a href="#">message</a></li>
  </ul>

JS:

function getSelected() {
    if (window.getSelection) {
        return window.getSelection();
    }
    else if (document.getSelection) {
        return document.getSelection();
    }
    else {
        var selection = document.selection && document.selection.createRange();
        if (selection.text) {
            return selection.text;
        }
        return false;
    }
    return false;
}

var selection = getSelected();


function checkObj(){
    var a = String(selection);
  var b = a.length;
  if (b > 0){
   $('.dropdown-menu').dropdown('toggle');//this isn't working
  }
}
    $(window).mouseup(function() {
  var a = checkObj(selection);

});

更新: 我已经拿到了要显示的菜单,但它只显示我是否突出显示文本,然后将指针拖到文本框外面,但是如果我只突出显示一个单词则不起作用。此外,我可以将下拉列表显示在我突出显示的文本上方。

http://liveweave.com/vDCkDp

1 个答案:

答案 0 :(得分:0)

$('.dropdown-menu').dropdown('toggle');

由于dropdown功能可能会检查点击事件或其他内容,因此无法正常工作。

$('.dropdown-menu').show();似乎正确打开菜单,需要手动编写js代码才能关闭菜单,请在https://css-tricks.com/dangers-stopping-event-propagation/外部查看关闭元素的正确方法。