2009-08-16 12 views

Odpowiedz

39

ten powinien zrobić:

var newClass = window.location.href; 
newClass = newClass.substring(newClass.lastIndexOf('/')+1, 5); 
$('body').addClass(newClass); 

całą "pięć znaków" sprawa jest trochę niepokojąca; ten rodzaj arbitralnego odcięcia jest zazwyczaj czerwoną flagą. Polecam łowienie wszystko dopóki _ lub:.

newClass = newClass.match(/\/[^\/]+(_|\.)[^\/]+$/); 

To wzór powinna przynieść następujące:

  • ../about_us.html: około
  • ../something.html: coś
  • . ./has_two_underscores.html: ma
+6

bardziej skuteczny niż $ ("ciało") jest $ (document.body), unika procesu selektora. Zobacz http://jsperf.com/jquery-body-vs-document-body-selector (uwaga: "wyżej jest lepiej" w podanych statystykach) –

+0

$ (document.body) działa również z jQuery 1.9.0 (podczas gdy $ ("body") nie działa (testowane w Chrome)). –

+0

Och, dziękuję, próbowałem to zrobić i to nie działało, ale uratowałeś mnie :) – Jerome

-3

Coś jak to może działać:

$("body").attr("class", "about"); 

wykorzystuje jQuery attr(), aby dodać klasę 'o' do ciała.

+0

To działa dobrze, aby dodać klasę do ciała. Po prostu nie odpowiedziałem na pytanie. – iCode

-1

Cóż, będziesz chciał document.location. Czy jakiś ciąg manipulacji na nim (chyba jQuery ma sposób aby uniknąć pracy dla Ciebie), a następnie

$(body).addClass(foo); 

wiem, że to nie jest pełna odpowiedź, ale zakładam, że można pracować resztę się:)

1

Można wyodrębnić tę część adresu URL za pomocą prostego regular expression:

var url = location.href; 
var className = url.match(/\w+\/(\w+)_/)[1]; 
$('body').addClass(className); 
-4

miałem ten sam problem,

<body id="body"> 

Dodaj znacznik ID do ciała:

$('#body').attr('class',json.class); // My class comes from Ajax/JSON, but change it to whatever you require. 

Następnie zmień klasa dla ciała za pomocą id. Zostało to przetestowane w Chrome, Internet Explorer   Explorer i Safari.

Powiązane problemy