@@ -544,26 +544,35 @@ <h1 class="file-heading">File: ../modules/JC.AutoFixed/0.1/AutoFixed.js</h1>
544
544
var _clickTs = JC.f.ts();
545
545
_p._model.highlightTrigger().on( 'click', function(){
546
546
_clickTs = JC.f.ts();
547
- _p.trigger( 'setCurHighlight', [ this ] );
547
+ var _eles = _p._model.findTargetAnchorAndLayout( $( this )) || {};
548
+ _p.trigger( 'setCurHighlight', [ this, _eles.layout ] );
548
549
});
549
550
550
- _p.on( 'setCurHighlight', function( _evt, _src ){
551
+ _p.on( 'setCurHighlight', function( _evt, _src, _layout ){
551
552
_src = $( _src );
552
553
if( !( _src && _src.length ) ) return;
553
554
_p._model.lastHighlightItem() && _p._model.lastHighlightItem().removeClass( _p._model.highlightClass() );
554
555
_src.addClass( _p._model.highlightClass() );
555
556
_p._model.lastHighlightItem( _src );
556
557
558
+ if( _layout && _layout.length ){
559
+ _p._model.lastHighlightLayout() && _p._model.lastHighlightLayout().removeClass( _p._model.highlightLayoutClass() );
560
+ _layout.addClass( _p._model.highlightLayoutClass() );
561
+ _p._model.lastHighlightLayout( _layout );
562
+ }
563
+
557
564
});
558
565
559
566
JWIN.on( 'scroll', function( _evt ){
560
567
if( JC.f.ts() - _clickTs < 200 ) return;
561
- var _st = JDOC.scrollTop(), _curItem;
568
+ var _st = JDOC.scrollTop()
569
+ , _curItem
570
+ , _anchorOffset
571
+ ;
562
572
_p._model.highlightTrigger().each( function(){
563
573
var _src = $( this )
564
574
, _anchorName = _src.attr( 'href' ).replace( /^\#/, '' )
565
575
, _anchor
566
- , _anchorOffset
567
576
;
568
577
if( !_anchorName ) return;
569
578
_anchor = $( JC.f.printf( 'a[name={0}]', _anchorName ) ).first();
@@ -575,9 +584,10 @@ <h1 class="file-heading">File: ../modules/JC.AutoFixed/0.1/AutoFixed.js</h1>
575
584
return false;
576
585
}
577
586
});
587
+ _anchorOffset = _anchorOffset || {};
578
588
if( _curItem ){
579
589
//JC.log( '_curItem', _curItem.attr( 'name' ) );
580
- _p.trigger( 'setCurHighlight', [ _curItem ] );
590
+ _p.trigger( 'setCurHighlight', [ _curItem, _anchorOffset.layout ] );
581
591
}
582
592
});
583
593
@@ -598,27 +608,55 @@ <h1 class="file-heading">File: ../modules/JC.AutoFixed/0.1/AutoFixed.js</h1>
598
608
//JC.log( 'AutoFixed.Model.init:', new Date().getTime() );
599
609
}
600
610
611
+ , findTargetAnchorAndLayout:
612
+ function( _trigger ){
613
+ var _src = $( _trigger )
614
+ , _anchorName = _src.attr( 'href' ).replace( /^\#/, '' )
615
+ , _anchor
616
+ , _anchorOffset
617
+ , _r = null
618
+ ;
619
+ if( !_anchorName ) return _r;
620
+ _anchor = $( JC.f.printf( 'a[name={0}]', _anchorName ) ).first();
621
+ if( !_anchor.length ) return _r;
622
+ _r = { trigger: _src, target: _anchor, layout: this.highlightAnchorLayout( _anchor ) };
623
+
624
+ return _r;
625
+ }
626
+
601
627
, gid:
602
628
function(){
603
629
!this._gid && ( this._gid = JC.f.gid() );
604
630
return this._gid;
605
631
}
606
632
633
+ , lastHighlightLayout:
634
+ function( _setter ){
635
+ _setter && ( this._lastHighlightLayout = _setter );
636
+ return this._lastHighlightLayout;
637
+ }
638
+
639
+ , highlightLayoutClass:
640
+ function(){
641
+ return this.attrProp( 'data-highlightLayoutClass' ) || this.highlightClass() || 'cur';
642
+ }
643
+
607
644
, lastHighlightItem:
608
645
function( _setter ){
609
646
_setter && ( this._lastHighlightItem = _setter );
610
647
return this._lastHighlightItem;
611
648
}
612
649
613
- , highlightTrigger:
650
+ , highlightClass:
614
651
function(){
615
- return this.selectorProp ( 'data-highlightTrigger ' );
652
+ return this.attrProp ( 'data-highlightClass ' ) || 'cur' ;
616
653
}
617
654
618
- , highlightClass:
655
+ , highlightTrigger:
619
656
function(){
620
- return this.attrProp ( 'data-highlightClass ' ) || 'cur' ;
657
+ return this.selectorProp ( 'data-highlightTrigger ' );
621
658
}
659
+
622
660
, anchorOffset:
623
661
function( _a ){
624
662
var _r = _a.offset(), _layout = this.highlightAnchorLayout( _a ), _tmp;
@@ -627,6 +665,7 @@ <h1 class="file-heading">File: ../modules/JC.AutoFixed/0.1/AutoFixed.js</h1>
627
665
_r = _layout.offset();
628
666
_r.top += _layout.height();
629
667
}
668
+ _r.layout = _layout;
630
669
631
670
return _r;
632
671
}
0 commit comments