我最近有一個表頭有一個問題,輸入爲每列的過濾器。通過過濾器標籤會移動焦點,但是如果其中一個輸入不可見或部分可見,它只會將輸入視爲可見,並且我被要求將全部輸入和列顯示出來。然後我被要求做同樣的事情,如果倒退到左邊。
此鏈接幫助讓我開始:http://www.webdeveloper.com/forum/showthread.php?197612-scrollIntoView-horizontal
簡短的回答是,你要使用:
document.getElementById('myElement').scrollLeft = 50;
或:
$('#myElement')[0].scrollLeft = 50;
這裏是我的解決方案(這可能是這個問題過分矯枉過正,但也許它會幫助某人):
// I used $.on() because the table was re-created every time the data was refreshed
// #tableWrapper is the div that limits the size of the viewable table
// don't ask me why I had to move the head head AND the body, they were in 2 different tables & divs, I didn't make the page
$('#someParentDiv').on('focus', '#tableWrapper input', function() {
var tableWidth = $('#tableWrapper')[0].offsetWidth;
var cellOffset = $(this).parent()[0].offsetLeft;
var cellWidth = $(this).parent()[0].offsetWidth;
var cellTotalOffset = cellOffset + cellWidth;
// if cell is cut off on the right
if (cellTotalOffset > tableWidth) {
var difference = cellTotalOffset - tableWidth;
$('#tableWrapper').find('.dataTables_scrollHead')[0].scrollLeft = difference;
$('#tableWrapper').find('.dataTables_scrollBody')[0].scrollLeft = difference;
}
// if cell is cut off on the left
else if ($('#tableWrapper').find('.dataTables_scrollHead')[0].scrollLeft > cellOffset) {
$('#tableWrapper').find('.dataTables_scrollHead')[0].scrollLeft = cellOffset;
$('#tableWrapper').find('.dataTables_scrollBody')[0].scrollLeft = cellOffset;
}
});
jQuery'scrollTo'插件可以用各種方法處理這個問題。 jQuery是一個選項嗎? –
我正在使用YUI。 jQuery如何做到這一點?它使用什麼DOM API? – mark
看看'window.scrollTo'和'window.scrollBy' - 有點低調,但是你有完整的權力過程 –