2011-01-04 8 views
1

Ich habe eine Webseite mit URL`s wie example.com/index.php?p=home An diesem SkriptJQuery - eine Klasse ändern mit "=" in es

$(document).ready(function() { 

    var pathname = jQuery.url.attr("query"); 
    $('.tab_container').append(' .'+ pathname +' '); 

    //Default Action 
    $(".tab_content").hide(); //Hide all content 
    $(' .'+ pathname +' ').show(); 

    //On Click Event 
    $("#sidebar-menu a").click(function() { 
     $("#sidebar-menu a").removeClass("active"); //Remove any "active" class 
     $(this).addClass("active"); //Add "active" class to selected tab 
     $(".tab_content").hide(); //Hide all tab content 
     var activeTab = $(this).attr("href"); //Find the rel attribute value to identify the active tab + content 
     $(activeTab).fadeIn(); //Fade in the active content 
     return false; 
    }); 

}); 

Und und html Breite divs dass enthält die Seiten-Klasse wie

<div id="tab1" class="tab_content p=home"> 

Kann ich ein Skript, das das Zeichen = aus dem Pfadnamen Variable und aus den Klassen der div`s wird entfernen?

Vielen Dank!

+0

Die kurze Antwort ist, dass ein '=' -Zeichen kein gültiges CSS-Klassenname-Zeichen ist. Für mehr zu diesem Thema, [siehe diese Diskussion] (http://stackoverflow.com/questions/448981/what-characters-are-valid-in-css-class-names) – treeface

+0

Deshalb brauche ich ein Skript, das wird Entferne das = Zeichen! Und ich tat das dank den Jungs unten! –

Antwort

2

pathname = pathname.replace(/=/g,'');
classes = document.getElementById('tab1').className;
$('#tab1').removeClass().addClass(classes.replace(/=/g,'');

Da meine Antwort akzeptiert wurde besser ich es wie Phrogz Antwort mehr machen, die bis gestimmt wurde. Die attr set-Funktion ist nett:

$('div[class*="'+pathname+'"]').attr('class',function(i,className){ 
    return className.replace(/=/g,''); 
}); 
pathname = pathname.replace(/=/g,''); 
+0

Vielen Dank! Ich habe nur die erste Zeile benutzt, die super funktioniert hat! Vielen Dank! –

0

Da sehe ich, dass die URL eine PHP-Seite ist, wird es nicht einfacher, PHP zu verwenden, um die Variable zu speichern ($_GET['p']) und dann ein str_replace darauf laufen (oder strtr), und übergeben Sie diese Variable auf jQuery ?

(Es ist nur ein Vorschlag, da die Seite eine PHP-Seite ist. Es tut mir leid, wenn dieses nicht für Sie gelten)

+0

Vielen Dank für die schnelle Antwort, ich kenne PHP nicht und es ist nicht von mir gemacht. Ich brauche etwas, das den PHP-Code nicht ändern muss. –

4

Da Sie ungültige HTML produzieren, ist es nicht garantiert, wie der Browser die aussetzen Klassen von Elementen für den Browser. Sie könnten versuchen:

$('div[class*="'+pathname+'"]').attr('class',function(i,className){ 
    return className.replace(/=/g,''); 
}); 

Das die "Attribute Contains" selector verwenden einen div mit der Saite in ihm zu finden, und die attr setter method den Wert zu ändern.

+0

Sie sind der Beste! Vielen Dank! Ich habe deine Antwort mit der Antwort unten kombiniert! –

Verwandte Themen