2017-09-13 77 views
1

当我选择一个选项时,如何禁用滚动到所选项目的顶部?这是简单的多选择与js,可以使用多选择没有clrt + C,代码下来。当选择更改时阻止多个选择滚动到顶部

window.onmousedown = function (e) { 

    var el = e.target; 

    if (el.tagName.toLowerCase() == 'option' && el.parentNode.hasAttribute('multiple')) { 

     e.preventDefault(); 

     // toggle selection 
     if (el.hasAttribute('selected')) 
      el.removeAttribute('selected'); 
     else 
      el.setAttribute('selected', ''); 

     // hack to correct buggy behavior 
     var select = el.parentNode.cloneNode(true); 
     el.parentNode.parentNode.replaceChild(select, el.parentNode); 
    } 
} 

回答

0

您可以保存先前的scrollTop的位置,并重新涂抹,像这样:

window.onmousedown = function (e) { 
    var el = e.target; 

    if (el.tagName.toLowerCase() == 'option' && el.parentNode.hasAttribute('multiple')) { 

     e.preventDefault(); 

     // save scroll state 
     var yeOldeScroll = el.scrollTop; 

     // toggle selection 
     if (el.hasAttribute('selected')) { 
      el.removeAttribute('selected'); 
     } else { 
      el.setAttribute('selected', ''); 
     } 

     // re-apply scroll state 
     el.scrollTop = yeOldeScroll; 

     // hack to correct buggy behavior 
     var select = el.parentNode.cloneNode(true); 
     el.parentNode.parentNode.replaceChild(select, el.parentNode); 
    } 
} 
相关问题