在我的頁面中,我有兩個寬度相同的表格,它們都是水平滾動的。當每個滾動時,我需要將兩個表都設置爲相同的位置。如何使用defineSetter在兩個對象中正確設置scrollLeft?
其實,我的代碼是:
var scrollA = $('#scrollA'),
scrollB = $('#scrollB');
scrollA.on('scroll', function() {
scrollB[0].scrollLeft = scrollA[0].scrollLeft;
});
它的工作原理。問題是,有些情況下加載的數據足夠大,從而減慢瀏覽器和滾動事件的速度。
然後,我試圖改善這些情況下的用戶體驗。
我做了這個片段,我嘗試使用的Object
的__defineSetter__
功能:
var elementA = { scrollLeft: 30 },
elementB = { scrollLeft: 30 };
elementA.__defineSetter__('scrollLeft', val => elementB.scrollLeft = val);
elementA.scrollLeft += 5;
console.log(elementA.scrollLeft + ' == ' + elementB.scrollLeft);
但是你可以看到正在運行的代碼段,它設置undefined
到elementA.scrollLeft
和NaN
至elementB.scrollLeft
。
我想在這裏得到一些指導,謝謝你的時間。
'__defineSetter__是'已過時,使用'defineProperty()' – zer00ne
而不必單獨的滾動條爲每個表爲什麼不能ü嘗試把他們都在一個容器中,有一個的滾動條到該容器,以便我們可以避免這種情況。我建議這個bcoz你說這兩個表具有相同的寬度 – Varatharaj
@Varatharaj。實際上,它是我正在處理的一個插件,它凍結了表格的列和/或標題...我現在無法測試它,但我會稍後嘗試您的想法 –