View Full Version : طریقه تعویض کردن خصوصیت کلاس در منو
sg.programmer
چهارشنبه 15 آذر 1391, 09:34 صبح
سلام
چطوری میتونم یک خصوصیت یک کلاس را در منو عوض کنم
منوی اصلی
<ul>
<li class="active"><a href="Default.aspx">Home</a>
<ul>
<li><a href="#">Libero</a></li>
<li><a href="#">Maecenas</a></li>
<li><a href="#">Mauris</a></li>
<li class="last"><a href="#">Suspendisse</a></li>
</ul>
</li>
<li><a href="Property-Grid.aspx">Style Demo</a>
<ul>
<li><a href="#">Lorem ipsum dolor</a></li>
<li><a href="#">Suspendisse in neque</a></li>
<li class="last"><a href="#">Praesent et eros</a></li>
</ul>
</li>
<li><a href="full-width.html">Full Width</a>
<ul>
<li><a href="#">Lorem ipsum dolor</a></li>
<li><a href="#">Suspendisse in neque</a></li>
<li class="last"><a href="#">Praesent et eros</a></li>
</ul>
</li>
<li><a href="#">Our Services</a></li>
<li class="last"><a href="#">Long Link Text</a></li>
</ul>
میخوام کلاس class="active" را به یک LI دیگه انتقال بشه وقتی روی منو ( LI )کلیک شد
pary_daryayi
چهارشنبه 15 آذر 1391, 12:07 عصر
من اینجا مشابهش رو پرسیدم.
http://barnamenevis.org/showthread.php?370869-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B1%D9%86%DA%AF-%D8%A8%DA%A9-%DA%AF%D8%B1%D8%A7%D9%86%D8%AF-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%B3%D9%84%DA%A9%D8%AA-%D8%B4%D8%AF%D9%86
sg.programmer
چهارشنبه 15 آذر 1391, 21:45 عصر
برای این موضوع چیکار باید کرد؟
Li ها که من در برنامه دارم هیچ کلاسی نداره میشه همینو بگید چطور میشه؟
$(document).ready(function(){
$("ul li").click(function(){
$('ul li').css('background', 'none');
$(this).css("background","green");
});
});
hakan648
پنج شنبه 16 آذر 1391, 12:57 عصر
سلام
$(document).ready(function () {
$("ul li").click(function() {
$("ul li .active").removeClass("active");
$(this).addClass("active");
});
});
sg.programmer
پنج شنبه 16 آذر 1391, 14:58 عصر
تشکر
Active اعمال میشه ولی بعد از اعمال، تغییرات لغو میشه و همون منوی (ایتم)قبلی که Active بوده دوباره کلاس اکتیو را میگیره
hakan648
پنج شنبه 16 آذر 1391, 19:02 عصر
راستش این کد HTMLی که قرار دادید خیلی شبیه به خروجی منوی Telerik هست!
اگه حدس بنده درست باشه ، باید از یک راه دیگه این مشکل رو حل کرد.
sg.programmer
پنج شنبه 16 آذر 1391, 19:53 عصر
نمیدونم ولی این شکلی
hakan648
شنبه 18 آذر 1391, 20:02 عصر
خود به خود که نباید این اتفاق بیوفته ، احتمالا کدهای JavaScript دیگه ای هم در صفحه بروی این منو تاثیر میزارن.
کد کامل صفحه رو قرار بدید ، به همراه کدهای CSS , JS
sg.programmer
یک شنبه 19 آذر 1391, 09:34 صبح
این سورس کامل اچ تی ام ال هست
تشکر از پیگیری شما
میخوام اینو (منو)در asp.net وارد مسترپیج کنم
hakan648
دوشنبه 27 آذر 1391, 20:11 عصر
کد رو نگاه کردم ، اما وقتی رو یک منو کلیک میکنیم ، صفحه ی مربوط به منو باز میشه و در اون صفحه ، منو کلاس active میگیره.
شما میخواید در MasterPage ، متناسب با صفحه ی فعلی ، منوی مورد نظر هم کلاس Active داشته باشه؟ منظورتون همینه؟
sg.programmer
دوشنبه 27 آذر 1391, 23:44 عصر
سلام
منظورم همینه
hakan648
سه شنبه 28 آذر 1391, 14:40 عصر
تست بفرمایید :
sg.programmer
شنبه 02 دی 1391, 19:38 عصر
تشکر ولی با 2012 نوشتین من نتونستم تست کنم اگه میتونید تو 2010 قرار بدید
hakan648
یک شنبه 03 دی 1391, 07:56 صبح
فایل های پروژه رو به یک پروژه ی خالی در VS2010 منتقل کنید ،
بنده VS2010 نصب شده ندارم.
sg.programmer
دوشنبه 04 دی 1391, 11:01 صبح
تشکر
وقتی تو برنامه استفاده میکنم فقط صفحه اصلی . صفحه ای که زیر منو نداره درست نشون میده - برای بقیه صفحه ها های لایت نمیشه منوی مربوطه و همچنین زیر منو ها هم نمایش داده نمیشه
hakan648
دوشنبه 04 دی 1391, 20:17 عصر
تشکر
وقتی تو برنامه استفاده میکنم فقط صفحه اصلی . صفحه ای که زیر منو نداره درست نشون میده - برای بقیه صفحه ها های لایت نمیشه منوی مربوطه و همچنین زیر منو ها هم نمایش داده نمیشه
نمونه ای که دادم رو اجرا کردید و جواب گرفتید که تو برنامه ی خودتون استفاده کردید؟
اگه کار کرده که در انتقال به پروژه ی خودتون بی دقتی کردید ، و اگه کار نکرده باید مشخص بشه که چرا کار نکرده ، چون خودم نوشتم و کار میکنه.
sg.programmer
دوشنبه 04 دی 1391, 22:34 عصر
سلام چرا برنامه شما را تبدیل به 2010 کردم جواب گرفتم
احتمالا در انتقال به برنامه جایی مشکل دارم.
اگه ممکنه تمامی اون قسمت از برنامه رو اگه میتونید در برنامه قراربدید چون شما منو را فقط در برنامه قرار دادید
hakan648
دوشنبه 04 دی 1391, 23:19 عصر
ببنید قسمت های دیگه ربطی به عملکرد اون قسمت ندارن برای همین قرار ندادم ، شما اگه متوجه عملیاتی که انجام میشه شده باشید ، میتونید مشکل رو برطرف کنید.
$(document).ready(function() {
HighlightCurrentMenu();
});
function HighlightCurrentMenu() {
var pageNameRegexp = /(\w+).aspx/i,
path = location.pathname,
pageName,
menuFirstLevelSelector = "#topnav > ul > li",
activeClassName = "active";
if (pageNameRegexp.test(path)) {
pageName = path.match(pageNameRegexp)[0];
$(menuFirstLevelSelector + "." + activeClassName).removeClass(activeClassName);
$(menuFirstLevelSelector + " > a[href=" + pageName + "]").parent().addClass(activeClassName);
}
}
همونطوری که متوجه شدید ، آدرس صفحه ی جاری توسط regexp دریافت میشه و کلاس active از selector زیر حذف میشه :
#topnav > ul > li.active
و والد selector زیر هم کلاس active میگیره:
#topnav > ul > li > a[href=CurrentPage.aspx]
پس با با کمی تغییر جزئی مثلا در ID ِ تگ منو یا ... برنامه به درستی کار نخواهد کرد.
sg.programmer
سه شنبه 05 دی 1391, 00:19 صبح
نمیدونم چطور تشکر کنم حق با شماست
برنامه الان هم داره کار میکنه. یک فرم دیگه قرار دادم فهمیدم مشکلم از کجاست با توضیحاتی که جناب عالی دادید:
من فرم یا همون صفحات aspx ای که قرار میدادم بصورت زیر بود xxxx-yyy.aspx که این "-" باعث این نا هماهنگی شده است .اگه ممکن هست بفرمایید چطور در Regex اینو(- خط تیره ) تعریف کنم.(w+ فکر کنم رشته باشه درسته)
و آیا اگر در در صفحاتم از querystring استفاده کنم مشکلی پیش نخواهد آمد؟
و همچنین /i چه کاربردی دارد؟
hakan648
سه شنبه 05 دی 1391, 12:32 عصر
خیلی خوبه که متوجه شدید :)
من کمی در مورد نوشتن RegExp عجله کردم و فرض رو بر این گذاشتم که اسم صفحه ی شما فقط از کلمه تشکیل شده ، حالا برای این انتخاب "-" هم RegExp رو بصورت زیر تغییر بدید :
var pageNameRegexp = /[a-z-]+\.aspx/i
و آیا اگر در در صفحاتم از querystring استفاده کنم مشکلی پیش نخواهد آمد؟
RegExp ِ ما فقط اولین نتیجه رو برمیگردونه ، پس حتی اگه در QueryString هم مقداری وجود داشته باشه که با RegExp مطابق باشه ، فقط آدرس صفحه که قبل تر هست انتخاب میشه. ( برای انتخاب تمام مقادیر متناسب با RegExp ، از سویچ g استفاده میکنند. )
و همچنین /i چه کاربردی دارد؟
i , g , m سویچ های Regexp هستند و حالت اجرای RegExp رو تعیین میکنند. مثلا سویچ i برای اینکه بزرگی و کوچکی حروف نادیده گرفته بشه استفاده میشه ، g برای جستجوی سرتاسری ( Global ) و m هم برای جستجوی چند خطی ( Multiline ) استفاده میشه.
اطلاعات بیشتر : JavaScript RegExp Object (http://www.w3schools.com/jsref/jsref_obj_regexp.asp)
sg.programmer
سه شنبه 05 دی 1391, 20:47 عصر
lمهندس تشکر
یه مشکلی که برام پیش میاد در sub menu هست
وقتی روی منو مثلا صفحه ای که منو با اون اجرا میشه با زیر منو متفاوت باشه اون منو از کار میفته
مثلا
<ul>
<li><a href="Default.aspx">Home</a>
<ul>
<li><a href="Default.aspx">Home</a></li>
<li><a href="Default1.aspx">Home1</a></li>
<li class="last"><a href="Default1.aspx">Home2</a></li>
</ul>
</li>
<li><a href="Contact.aspx">Contact</a>
<ul>
<li class="last"><a href="About.aspx">Praesent et eros</a></li>
</ul>
</li>
</ul>
برای home جواب میده و برای home1 , home2 خراب میشه
hakan648
سه شنبه 05 دی 1391, 23:06 عصر
اول از همه چیز ، Default1.aspx با RegExp ای که نوشتم مطابقت نمیکنه ، من دقیقا مشابه با چیزی که فکر کردم نیاز دارید نوشتم ، باز هم به این شکل تغییرش بدید :
var pageNameRegexp = /[a-z0-9-]+\.aspx/i
چرا باید آدرس زیر منو با منوی اصلی یکی باشه؟
اصل این کدی که نوشتم بر اساس اسم صفحه هست ، چطوری برنامه تشخیص بده که کدوم منو برای صفحه ی جاری هست وقتی چند تا آدرس یکی پیدا کنه؟
sg.programmer
پنج شنبه 07 دی 1391, 07:34 صبح
تشکر
منظورم از default1 , ... صفحات دیگر بودند .
من میخوام زیر منو هام با منو اصلی فرق داشته باشه وقتی که زیر منو صفحه ای غیر از صفحه ای که منوی اصلی فراخوانی میکنه را صدا کنه مشکل پیش میاد.های لایت ها اتفاق نمی افته
hakan648
پنج شنبه 07 دی 1391, 22:56 عصر
تابع HighlightCurrentMenu رو به این شکل تغییر بدید :
function HighlightCurrentMenu() {
var pageNameRegexp = /[a-z0-9-]+\.aspx/i,
path = location.pathname,
pageName,
menuWrapperSelector = "#topnav",
menuItemSelector = menuWrapperSelector + " ul li",
menuFirstLevelSelector = menuItemSelector.split(" ").join(" > "),
activeClassName = "active";
if (pageNameRegexp.test(path)) {
pageName = path.match(pageNameRegexp)[0];
$(menuItemSelector + "." + activeClassName)
.removeClass(activeClassName);
$(menuItemSelector + " > a[href=" + pageName + "]")
.parents(menuFirstLevelSelector)
.addClass(activeClassName);
}
}
تغییری که دادم به این صورت هست که ابتدا کلاس active از هر منویی حذف میشه و سپس جستجو برای یافتن لینکِ برابر با صفحه ی جاری در تمام منو انجام میشه ( در ورژن قبلی فقط در اولین سطح جستجو انجام می شد ) و سپس منوی سطح ِ یکِ والدِ لینکِ پیدا شده کلاس active میگیره.
sg.programmer
جمعه 08 دی 1391, 09:23 صبح
مهندس تشکر
وقتتون را زیاد گرفتم میدونم ولی مشکل حاد تر شد
الان دیگه هیچ کلاسی active نمیشه و درضمن زیرمنو ها هم حذف میشه و نشون داده نمیشه
hakan648
جمعه 08 دی 1391, 11:35 صبح
من این کدهارو تست هم کردم ، مجددا این پروژه رو به یک پروژه ی 2010 منتقل کنید و نتیجه رو ببینید:
http://developerteam.tk/userfiles/image/forum/Barnamenevis_MenuHighlighting.png
sg.programmer
چهارشنبه 13 شهریور 1392, 21:30 عصر
سلام
تشکر مهندس
من وقتی از querystring استفاده کردم زیر منو ها را نمایش نمیده از چه RegExp باید استفاده کنم
hakan648
چهارشنبه 13 شهریور 1392, 22:49 عصر
سلام دوست عزیز
شما بعد از 8 ماه هنوز هم با این چند خط کد ساده مشکل دارید، اگر کمی وقت میزاشتید و تفکر میکردید، مطمئنم خیلی زودتر به نتیجه میرسیدید.
ببینید من الان کل پست هارو مطالعه کردم و فکر میکنم 90% اونها بی ارزش بودند! در یک پست گفتید آدرس من دارای - هست و من برای شما Regexp رو آپدیت کردم، دفعه ی بعد گفتید آدرس من دارای شماره هست و من هم مجدد...
اینجور تاپیک ها شخصی هستند و فاقد ارزش برای دوستان دیگه هستند، لطفا سعی کنید بیشتر مطالعه کنید، جستجو کنید، اگر در انجام کار مشکل داشتید سوال بپرسید. ( حتی با اینکه لینک برای مطالعه ی Regexp به شما معرفی کردم اما مطالعه نکردید و همین موجب ایجاد چندین پست فاقد محتوا، اتلاف زمان و ... شده. )
موفق باشید...
sg.programmer
پنج شنبه 14 شهریور 1392, 21:04 عصر
تشکر از نگاهتون
من مطالعه کردم QS ندیده بودم .آخه اون چند ماه داشتم درس میخوندم. چرا فاقد ارزش هست و زمان تلف کردن هست همین کمک شما خیلی بدردم خورد اجتمالا برای افراد دیگه هم مفید یوده
حالا دانش شما بیشتر هست از نظر شما فاقد ارزش هست
بازم تشکر از راهنمایتون
sinoser
دوشنبه 18 شهریور 1392, 02:29 صبح
تا وقتی متخصص این کار هست
خب چرا نمی رید به اونا سفارش بدید کار رو تمیز تحویل بگیرید
چرا ما ایرانی های برنامه نویس به خودمونم احترام نمی ذاریم بعد انتظار داریم برنامه نویسی و برنامه سازی توی ایران رشد کنه!(البته اشاره به بعضیا داره)
به حقوق هم احترام بذاریم
البته گرفتن راهنمایی هم عیب نیست ولی نه به قیمتی که بگیم من فلان زبان رو نمی دونم این چی میشه
وقتی نمی دونید برید بدید کسی که میدونه
موفق باشید:چشمک:
sg.programmer
سه شنبه 19 شهریور 1392, 17:22 عصر
تا وقتی متخصص این کار هست
خب چرا نمی رید به اونا سفارش بدید کار رو تمیز تحویل بگیرید
چرا ما ایرانی های برنامه نویس به خودمونم احترام نمی ذاریم بعد انتظار داریم برنامه نویسی و برنامه سازی توی ایران رشد کنه!(البته اشاره به بعضیا داره)
به حقوق هم احترام بذاریم
البته گرفتن راهنمایی هم عیب نیست ولی نه به قیمتی که بگیم من فلان زبان رو نمی دونم این چی میشه
وقتی نمی دونید برید بدید کسی که میدونه
موفق باشید:چشمک:
سلام
میشه واضح صحبت کنید؟
از الان پروژه کارشناسیم را شروع کردم تا اتمام دوره ام میخوام تمام کنمش را بدم بیرون تا چی بشه که شما به اصطلاح متخصص سفارشش را بگیرید؟
شما که متخصص هستید بیایید پولش را بگیر تا به شما سفارش بدم (البته اگه از اول که بوجود اومدید متخصص بودید)
بحث را چرا منحرف کردید من از متخصصین سفارش گیر تقاضایی راهمنایی نکردم از دوستانی که توی این انجمن بدون سفارش و ادعای متخصص بودن را ندارن راهنمایی خواستم
اینجا انجمن هست و برای راهنمایی - حالا شاید این سوالم برای شما چیز آسونی باشه بعد همه چی پول نیست
مباحثی که در این تاپیک به نظرمن که متخصص نیستم دارای ارزش یادگیری بود :
1-طریقه تغییر خصوصیت
2-Regex
3- داشتن ادب و احترام و در گیر نبودن در مادیات
4-متخصص ها
sg.programmer
سه شنبه 19 شهریور 1392, 23:19 عصر
مشکلمو تونستم حل کنم
hakan648 (http://barnamenevis.org/member.php?121474-hakan648)
http://barnamenevis.org/images/statusicon/user-offline.png تشکر
sinoser
چهارشنبه 20 شهریور 1392, 12:27 عصر
سلام
میشه واضح صحبت کنید؟
از الان پروژه کارشناسیم را شروع کردم تا اتمام دوره ام میخوام تمام کنمش را بدم بیرون تا چی بشه که شما به اصطلاح متخصص سفارشش را بگیرید؟
شما که متخصص هستید بیایید پولش را بگیر تا به شما سفارش بدم (البته اگه از اول که بوجود اومدید متخصص بودید)
بحث را چرا منحرف کردید من از متخصصین سفارش گیر تقاضایی راهمنایی نکردم از دوستانی که توی این انجمن بدون سفارش و ادعای متخصص بودن را ندارن راهنمایی خواستم
اینجا انجمن هست و برای راهنمایی - حالا شاید این سوالم برای شما چیز آسونی باشه بعد همه چی پول نیست
مباحثی که در این تاپیک به نظرمن که متخصص نیستم دارای ارزش یادگیری بود :
1-طریقه تغییر خصوصیت
2-Regex
3- داشتن ادب و احترام و در گیر نبودن در مادیات
4-متخصص ها
سلام
خب اولا من خودمو متخصص معرفی نکردم و نگفتم بیاید به من بدید
با این حال گفتم شاید اشتباه شده باشه و رفتم و باز متنمو خوندم و دیدم اصلا همچین حرفی نزدم!
بعدشم من 3 بار متن شما رو " از الان پروژه کارشناسیم را شروع کردم تا اتمام دوره ام میخوام تمام کنمش را بدم بیرون تا چی بشه که شما به اصطلاح متخصص سفارشش را بگیرید؟
شما که متخصص هستید بیایید پولش را بگیر تا به شما سفارش بدم (البته اگه از اول که بوجود اومدید متخصص بودید) " خوندم و منظورتون رو نفهمیدم جمله بندیدتون اشتباهه!
بعدشم من که گفتم سوال مشکلی نداره و اصلا این مکان برای همینم هست!!! من مشکلم با گروهی از افراده که متن سوالشون اینه:
من jQuery نمی دونم چطور میشه فعلا کار کرد
بعد دوستان میان می گن فلان طور جواب میدون میشه کد رو بذارید!!!!!
من با این جور کارا مخالفم
خب اگر یاد نداری و می خوای یاد بگیری اینجا جای اموزش نیست برو کتاب بگیر بخون یاد بگیر!
اگرم یاد نداری و دوستم نداری یاد بگیری خب چرا اینجا گفتی!
شما کمی توی فروم های خارجی برید می بینید چطور با این موضوع برخورد می کنن!
منم خودم با تمام این تفاسیر اگر کسی یاد نداشته باشه و مشکلش خیلی سحطی باشه و با 3 - 4 خط کد حل مشه خودم کد رو بش میدم
اما شما خودتون برید نگاه کنید
گاهی در یک مواردی کد می خوان که اگر به بحث خوندن و یادگیریش برسه طرف حداقل باید 5 روز کاملو وقت بذاره تا یاد بگیر شایدم بیشتر
من این جور موارد می گم بهترین کار سپردن به یک متخصص هست که وقتشو صرف این کار کرده!
شما دوستانی که می خونید این پست منو خدایش کدومتون مخالف این حرف هستید البته شما دوست عزیز که من می دونم هر چیم بگم با این که شاید قبولم بکنید حالا به بحث کل کل یا هر چی می گید نه!
در امریکا کسی شیر خونش خراب میشه زنگ میزنه متخصص میاد عوض می کنه کاری به این ندارم که اونا واسه الگو بودن خوبن یا نه من حرفم سر اینه با رعایت این چیزا زمینه کار و انگیزه رو توی برنامه نویس ها و بخصوص سمت کلاینت ها و بخصوص javascript نویسا که همیشه سورساشون برای دیگران بازه و اکثرا به همین دلیل نمیان طرف متخصص شدن در این زمینه به خاطر عدم تضمین درامد زیاد کنیم تا در این زمینه هم سایت های ما رشد کنن!
موفق باشید
sg.programmer
چهارشنبه 20 شهریور 1392, 14:46 عصر
مهندس چرا؟
سوال بنده را ببینید کجاش نوشتم که jquery نمی دونم و کد قرار بدید و .. : راهنمایی خواستم در مورد
طریقه تعویض کردن خصوصیت کلاس در منو
من jQuery نمی دونم چطور میشه فعلا کار کرد
بعد دوستان میان می گن فلان طور جواب میدون میشه کد رو بذارید!!!!!
اگه در جاهای دیگه دیدید نباید توی این تاپیک قرار بدید.
بعد یکی از دوستای همین فروم اومدن برای راهنمایی گفتند کدتون را بدید تا نگاه کنم
http://barnamenevis.org/showthread.php?371955-%D8%B7%D8%B1%DB%8C%D9%82%D9%87-%D8%AA%D8%B9%D9%88%DB%8C%D8%B6-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AE%D8%B5%D9%88%D8%B5%DB%8C%D8%AA-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AF%D8%B1-%D9%85%D9%86%D9%88&p=1645395&viewfull=1#post1645395
چون خودم میخوام این پروِژه کارشناسی ام را بنویسم دارم سعی میکنم تا یه چیزی از( وب و جی کو. ..) باکمک این سایت و تلاش خودم یاد بگیرم وگرنه متخصصی که کار تمیز بده بیرون و یا سورس های این چنینی رایگان زیاده.
منم حال بحث کردن (چرا این شد و تو اینو گفتی و من اینو گفت و... ) را ندارم. لطفا ادامه ندید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.