2016-05-23 8 views
1

Ich habe eine Website in zwei Spalten. Auf der linken Seite sind alle Links, auf der anderen Seite ist der Inhalt. Wenn Sie auf einen Link klicken, wird der Inhalt angezeigt und der Link wird ebenfalls automatisch ausgerichtet.
You can test it here

Ich bin auf der Suche nach einem Weg, um eine Schaltfläche auf der Unterseite der linken Seite zu implementieren, die auf besondere Weise zum oberen Rand des Dokuments scrollen:
il Willen, den ersten Link oben (und aktivieren blättern Sie dazu) und richten Sie gleichzeitig den entsprechenden Artikel der rechten Seite aus. Bis jetzt funktioniert das Ausrichtungssystem, außer für diesen Link, siehe den Code, den ich unten hinzufügen möchte.

zu einem Link scrollen und aktivieren

$('.cd-top').bind('click', function(e) { 
     e.preventDefault(); 

     var $container = $('.menu-content:first'), 
     $desc = $('.menu-content:first'); 

      $desc.slideDown('100', function() { 
       $("#scrollingaside").scrollTo($container, 500, {offset: { top:-1 } });// la hauteur d'alignement c'est ici ! 
       $("#scrollingontheright").scrollTo($("#" + $container.attr('data-id')), 1500); 
      }); 
     } 
    }); 
    $('.article').bind('click', function() { 
     var idproj = $(this).find('span:first').attr('id'); 
     $('.menu-content[data-id="' + idproj + '"]').find('.cd-top').trigger('click'); 
    }); 
+0

Link zu der Fiddle hat – Yagayente

Antwort

2

// Verwendung auf() statt binden

$('.expander').on('click', function(e) { 
    e.preventDefault(); 

    var $container = $(this).parents('.menu-content:first'), 
    $desc = $(this).parents('.menu-content'); 
// newly added 
    $('.expander').parents(".current").removeClass('current'); 
    if($container.hasClass('current') == false) { 

     var others = $('.current'); 
     $container.addClass('current'); 

     $desc.slideDown('100', function() { 
      $("#scrollingaside").scrollTo($container, 500, {offset: { top:-1 } });// la hauteur d'alignement c'est ici ! 
      $("#scrollingontheright").scrollTo($("#" + $container.attr('data-id')), 1500); 
     }); 
    } 
}); 
$('.article').bind('click', function() { 
    var idproj = $(this).find('span:first').attr('id'); 
    $('.menu-content[data-id="' + idproj + '"]').find('.expander').trigger('click'); 
}); 
**// new code** 
$(".cd-top").on("click",function(){ 
$('.expander:first').trigger("click"); 
}); 
+0

Scheint zu funktionieren ABER nur wenn ich einmal auf diesen Link klicke. Wenn ich zweimal klicke, scheint die Schaltfläche nicht aktiv zu sein. Siehe hier = https://jsfiddle.net/yagayente/rjw5r7qL/2/ Irgendeine Idee? – Yagayente

+0

$ (this) .parents (". Current"). RemoveClass ('current'); Ich habe diese Zeile hinzugefügt, sobald es jetzt funktionieren sollte Hinweis: auch die Links funktionieren nicht auf den zweiten Klick behoben – sarath

+0

Ok. Fast dort ! :) Die Scrollfunktion funktioniert jetzt ... Aber: es scheint so als ob "aktuelle" Klasse nun auf jedem Link geklickt bleibt anstatt zu gehen, wenn du den Link wechselst. Sehen Sie das Problem hier: https://jsfiddle.net/yagayente/tkvtr2e3/2/ - Ich machte eine CSS für die ".current" zu sehen – Yagayente

0

Sie haben soeben einen Click-Handler auf diese Schaltfläche und Trigger anhängen können ("Vorwärts") ein Klick-Ereignis auf dem obersten Link aus dem Menü:

$('#top').click(function() { 
    $('.menu a')[0].click() 
    }) 

Der Selektor‘.menu a 'muss geändert werden, um den richtigen Link anzusprechen.

+0

korrigiert nicht zu machen, es gelingt nicht funktioniert noch .. https://jsfiddle.net/yagayente/rjw5r7qL/ 1/ – Yagayente

+0

Humm. Funktioniert nicht. Oder ich weiß nicht, wie ich damit umgehen soll. Jeder? – Yagayente