ورود

View Full Version : سوال: تغییر استایل منوی صفحه جاری



css-man
پنج شنبه 17 مرداد 1392, 09:48 صبح
سلام
دوستان من می خوا با جی کوئری هر صفحه ای که توش هستم منوش رو یک کلاس خاص بهش بدم
تو صفحه انگلیسی میشه ولی تو صفحه هایی که ادرسش فارسی هست نمیشه راهش چیه؟

sinoser
پنج شنبه 17 مرداد 1392, 11:42 صبح
شما نام کلاس های هر صفحه رو چطوری می سازید؟
با استفاده از ادرس صفحه یا نه؟

css-man
پنج شنبه 17 مرداد 1392, 13:39 عصر
من یه کلاس تعریف کردم از قبل ادرس و با کد زیر کلاس رو بهش اضافه می کنم




//<![CDATA[
jQuery(function() {
jQuery('#menu-main li').each(function() {
newURL = window.location.protocol + "//" + window.location.host + window.location.pathname;
var href = jQuery(this).find('a').attr('href');
if (href === newURL) {
jQuery(this).addClass('current');
}
});
});
//]]>

sinoser
پنج شنبه 17 مرداد 1392, 14:13 عصر
اولا این کدی که نوشی اشکلات منطقی داره
newURL نیاز نیست به ازاری هر li محاسبه بشه اخر ادرس صفحه که تغییر نمی کنه و به ازای هر بار اجرا یکی هست
پس محاسبشو ببر قبل بلوک each

دوما مگر لینک ها مال یک سایت نیست خب پس پروتکل و ادرس سایت ثابته پس نیاز نیست الکی هم توی لینکا هم توی محاسبه newURL پروتکل و ادرس سایت رو جز نام بگیری یعنی ادرس دهی نسبی استفاده کنید

سوما در زمانی که دنباله ی ادرس شما فارسی باشه هنگام محاسبه window.location.pathname کاراکتر های فارسی به شکل هگزادسیمال (مثل : 2%20%55%) در میاد پس شما 2 راه دارید:
1- یا ادرس ها رو کامل اینگلیسی کنید (اگر cms شما WP یا joomla هست دیدم که میشه ) یعنی عدم نمایش عنوان در ادرس
2-ادرس های داخل صفت href تگ های a رو به همون شکل هگزادسیمال بنویسید یا در هنگام محاسبه قبل به هگزادسیمال تبدیل کنید که بگردید می تونید توابعی برای این تبدیل پیدا کنید.

css-man
پنج شنبه 17 مرداد 1392, 15:54 عصر
نه سی ام اس ما اختصاصی هست
قابلیت این هم هست که آدرس انگلیسی باشه ولی خوب اگر کاربر صفحه ای ساخت و آدرس رو فارسی از مشکل ایجاد میشه

راهی باید باشه که این ادرس ها رو decod کرد

jalil_gh
یک شنبه 20 مرداد 1392, 13:51 عصر
اینطوری بنویسید شاید درست بشه.
jQuery(function() {
newURL = window.location.protocol + "//" + window.location.host + window.location.pathname;
jQuery('#menu-main li').each(function() {
var href = encodeURIComponent(jQuery(this).find('a').attr('hr ef')(;
if (href === newURL) {
jQuery(this).addClass('current');
}
});
});