2015-12-18 2 views
5

Questo è il mio file ajax problematico. Si prega di fare riferimento anche alla mia domanda originale css qui: .Current link styling on CSS only works on the 1st page and doesn't transfer to the otherAjax non lascerà funzionare correttamente lo stile di collegamento corrente css

Come posso risolvere questo codice Ajax in modo che inizi a farmi applicare il mio stile di collegamento corrente alla pagina corrente attuale?

$("a.ajax-link").live("click", function(){ 
$this = $(this); 
var link = $this.attr('href'); 
var current_url = $(location).attr('href'); 

if(link != current_url && link != '#') { 
    $.ajax({ 
     url:link, 
     processData:true, 
     dataType:'html', 
     success:function(data){ 
      document.title = $(data).filter('title').text(); 
      current_url = link; 
      if (typeof history.pushState != 'undefined') 
       history.pushState(data, 'Page', link); 

      setTimeout(function(){      
       $('#preloader').delay(50).fadeIn(600); 
       $('html, body').delay(1000).animate({ scrollTop: 0 },1000);      

       setTimeout(function(){ 

        $('#ajax-content').html($(data).filter('#ajax-content').html()); 
        $('#ajax-sidebar').html($(data).filter('#ajax-sidebar').html()); 

        $('body').waitForImages({ 
         finished: function() { 
          Website(); 
          backLoading(); 
          $('.opacity-nav').delay(50).fadeOut(600); 
         },          
         waitForAll: true 
        });        
       },1000); 
      },0); 
     } 
    }); 
} 
return false; 
}); 

risposta

3

Credo che solo bisogno di rimuovere la classe current dal precedente <li class = "current"> e la necessità di applicarlo al genitore <li> tag corrente <a> del tag.

questo può essere fatto in modo seguente:

$("a.ajax-link").live("click", function(){ 
    $this = $(this); 
    var link = $this.attr('href'); 
    var current_url = $(location).attr('href'); 

    if(link != current_url && link != '#') { 
     $.ajax({ 
      url:link, 
      processData:true, 
      dataType:'html', 
      success:function(data){ 

       //code to apply current class to current li 

       if($this.parent("div.logo").length == 0){ 
        $("li.current").removeClass("current"); 
        $this.parent("li").addClass("current"); 
       } 
       //code ends here 

       document.title = $(data).filter('title').text(); 
       current_url = link; 
       if (typeof history.pushState != 'undefined') 
        history.pushState(data, 'Page', link); 

       setTimeout(function(){      
        $('#preloader').delay(50).fadeIn(600); 
        $('html, body').delay(1000).animate({ scrollTop: 0 },1000);      

        setTimeout(function(){ 

         $('#ajax-content').html($(data).filter('#ajax-content').html()); 
         $('#ajax-sidebar').html($(data).filter('#ajax-sidebar').html()); 

         $('body').waitForImages({ 
          finished: function() { 
           Website(); 
           backLoading(); 
           $('.opacity-nav').delay(50).fadeOut(600); 
          },          
          waitForAll: true 
         });        
        },1000); 
       },0); 
      } 
     }); 
    } 
    return false; 
}); 
+0

grazie mille! Ha funzionato! Come non ho visto questo ... – David

+0

Ah, domanda di follow-up! Il modo in cui funziona è che è collegato al link vero? C'è un modo per farlo controllare l'URL invece? Perché ho bisogno che la home page rimanga attiva quando si fa clic anche sul logo. Con questo codice, lo stile della home page scompare quando si fa clic sul logo. Capisci il problema? Fammi sapere se ho bisogno di elaborare. Ma grazie mille per avermi aiutato con quel codice1 – David

+0

@David - ha aggiornato la risposta per evitare 'addClass' ogni volta che si fa clic sul collegamento del logo. Spero di averti capito. – vijayP