2017-03-24 6 views
1

Ich habe zwei Javascript-Dateien, die miteinander in Konflikt geraten. Eine besteht darin, Modale zu öffnen und Links wie <a href="#modal" data-toggle="modal">open modal</a> zu verwenden und dann das Modal mit id="modal" zu öffnen. Aber das andere Skript ist für reibungslose Scroll und es entfernt den Anker von der URL (I'd like to keep that part!) aber nach dem Hinzufügen der glatten Scroll-Skript, funktionieren die Modale nicht. irgendwelche Ideen, wie ich es beheben kann?Was ist der beste Weg, um JavaScript-Funktionen zu trennen?

modal.js:

$(".modal-wide").on("show.modal", function() { 

    var height = $(window).height() - 200; 
    $(this).find(".modal-body").css("max-height", height); 
}); 
$('a[data-toggle="modal"]').bind('click',function(){ 
    $('.modal').modal('hide'); 
}); 

scroll.js:

$(function() { 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if (target.length) { 
     $('html, body').animate({ 
      scrollTop: target.offset().top 
     }, 500); 
     return false; 
     } 
    } 
    }); 
}); 

scroll.js Quelle: https://css-tricks.com/snippets/jquery/smooth-scrolling/

+0

Ist es ein Bootstrap Modal? Version 3? – amenadiel

+0

@amenadiel Ich weiß ehrlich nicht, woher ich den modalen Code habe, aber ich glaube es ist von Bootstrap 3.0 ja –

Antwort

1

Versuchen Sie, Ihre spezifischen href-Tags an den nicht-Wähler die die glatte Scroll-Zugabe Funktion.

$('a[href*="#"]:not([href="#"]):not([href="#modal"])').click(function() 

Hier ist eine Geige zeigt die Smooth nur für den reibungslosen Scroll div arbeitet, die Ihre modal Funktionalität bewahren sollte.

https://jsfiddle.net/bryangators/wjgu1vL9/

+0

hmm das ist schön, aber die 'href =" # modal "' würde ein Modal öffnen, das die ID hatte von "modal". Mit diesem Code müsste ich also jede Modal-ID zum ': not'-Teil hinzufügen. Kann es stattdessen mit 'data-toggle =" modal "' gemacht werden? –

+0

ooh nvm. war in der Lage, es selbst zu testen und der Code funktioniert jetzt mit $ ('a [href * = "#"]: nicht ([href = "#"]): nicht ([data-toggle = "modal"]) ') .click (function() {'. Vielen Dank für Ihre Hilfe :) –

+0

Your'e wilkommen. – bryangators55

Verwandte Themen