diff options
author | Jacob Thornton <jacobthornton@gmail.com> | 2012-03-22 10:45:58 +0400 |
---|---|---|
committer | Jacob Thornton <jacobthornton@gmail.com> | 2012-03-22 10:45:58 +0400 |
commit | 706ee46b73b58059230b24589160da784778aad2 (patch) | |
tree | 02ed360279f52c9891fdcad4ec50c5167188d22c /js/bootstrap-scrollspy.js | |
parent | 94b24aaa473755093677cb4eb80faf3daee53357 (diff) |
sort scrollspy to prevent flicker for unordered nav
Diffstat (limited to 'js/bootstrap-scrollspy.js')
-rw-r--r-- | js/bootstrap-scrollspy.js | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/js/bootstrap-scrollspy.js b/js/bootstrap-scrollspy.js index e0c74539e1..5008b0fe97 100644 --- a/js/bootstrap-scrollspy.js +++ b/js/bootstrap-scrollspy.js @@ -43,16 +43,25 @@ constructor: ScrollSpy , refresh: function () { - this.targets = this.$body + var self = this + , $targets + + this.offsets = [] + this.targets = [] + + $targets = this.$body .find(this.selector) .map(function () { var href = $(this).attr('href') - return /^#\w/.test(href) && $(href).length ? href : null + return /^#\w/.test(href) + && $(href).length + && [[ $(href).position().top, href ]] + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) }) - - this.offsets = $.map(this.targets, function (id) { - return $(id).position().top - }) } , process: function () { |