PDA

View Full Version : سوال: استایل دادن به list به صورت یکی در میان



persianuser2
جمعه 27 مرداد 1391, 10:57 صبح
سلام دوستان یک سوال مهم دارم که خیلی مغزم رو مشغول کرده. راهی داره که به لیست ها بصورت یکی در میان استایل بدیم؟! البته نه اینکه یکی یکی استایلشون رو تعریف کنیم و مثلاً برای یک سیستم مدیریت محتوا که تعداد منو ها متغیر هست چه راهی وجود داره؟!
مثال:

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<ul>
<li>1</li>
<li>1</li>
</ul>
<li>4</li>
<li>5</li>
</ul>
من میخوام کد بالا یکی درمیان پس زمینه سفید و سیاه داشته باشه اما بدون اینکه استایل خاصی تعریف بشه این اتفاق بیفته. در واقع میخوام مثل پایین نباشه:

<ul>
<li class="css1">1</li>
<li class="css2">1</li>
<li class="css1">1</li>
</ul>
امیدوارم منظور رو درست منتقل کرده باشم.

Sirwan Afifi
جمعه 27 مرداد 1391, 11:31 صبح
خوب شما به راحتی می تونید توسط jQuery این کارو انجام بدید:
$('li:odd').addClass('css1');
$('li:even').addClass('css2');

persianuser2
جمعه 27 مرداد 1391, 11:55 صبح
خوب شما به راحتی می تونید توسط jQuery این کارو انجام بدید:
$('li:odd').addClass('css1');
$('li:even').addClass('css2');

داداشی من jquery کار نکردم یکم توضیح میدی؟! آیا با همین تو خط اگه بذارم تو یک فایل‌ js تمومه؟! خودش این کار رو میکنه؟! اگه این کار میکنه یک راهنمایی دیگه هم بکن لطفاً من این استایل رو برای submenu میخوام چطور میشه jquery رو روی submenu اعمال کرد؟!

Sirwan Afifi
جمعه 27 مرداد 1391, 12:04 عصر
داداشی من jquery کار نکردم یکم توضیح میدی؟! آیا با همین تو خط اگه بذارم تو یک فایل‌ js تمومه؟! خودش این کار رو میکنه؟! اگه این کار میکنه یک راهنمایی دیگه هم بکن لطفاً من این استایل رو برای submenu میخوام چطور میشه jquery رو روی submenu اعمال کرد؟!

ابتدا پیشنهاد می کنم کتاب jQuery in Action رو مطالعه بفرمائید،بله با این دو خط شما به هدفتون می رسید اگه با CSS کار کرده باشید می دونید که ما یه سری Selector داریم و این li:Odd همون Selector ما هست و اینجا $ اون رو برای شما انتخاب می کنه و بعد می تونید عملیات موردنظرتون رو روی مجموعه انتخاب شده اعمال کنید همچنین می تونید توسط Chaning در jQuery به زنجیره وار متدهای مختلف رو مجموعه انتخاب شده اعمال کنید به عنوان مثال در خط اول بعد از این کلاس css1 رو توسط متد addClass به مجموعه انتخاب شده اعمال کردید می تونید رنگ فونتشون رو به سفید تغییر بدید :

$('li:odd').addClass('css1').css('color', 'white');

persianuser2
جمعه 27 مرداد 1391, 12:10 عصر
حرفت درست دوست عزیز ولی من الان کارم گیره این هست که چطور برای زیرمنو ها استایل بدم با این دستور ؟! چطور باید بهش بگم برای زیر منو این کار رو بکنه؟! اگر بجای li.odd بذارم مثلاً :


$('ul.menu ul li:odd').addClass('css1').css('color', 'white');

درست میشه ؟! کارم راه می افته؟!

p.parsaee
جمعه 27 مرداد 1391, 13:43 عصر
ميتونيد به روش زير عمل كنيد:


ul li:nth-of-type(odd)
{
}


بسيار راحت هست. ولي يك بدي داره و اونم اينه كه بعضي مرورگرهاي قديمي مثل اينترنت اكسپلورر 6 اين كد رو نميفهمن. اگه بخوايد كه توي مرورگرهاي قديمي قابل شناسايي باشه به همون روشي كه Sirwan Afifi گفت بريد جلو.

persianuser2
جمعه 27 مرداد 1391, 15:46 عصر
ميتونيد به روش زير عمل كنيد:


ul li:nth-of-type(odd)
{
}


بسيار راحت هست. ولي يك بدي داره و اونم اينه كه بعضي مرورگرهاي قديمي مثل اينترنت اكسپلورر 6 اين كد رو نميفهمن. اگه بخوايد كه توي مرورگرهاي قديمي قابل شناسايي باشه به همون روشي كه Sirwan Afifi گفت بريد جلو.

خوب نمیخوام این اتفاق رخ بده (البته فکر نمیکنم دیگه تو دنیا کسی باشه که از اینترنت اکسپلورر 8 به پایین استفاده بکنه!!). واسه همین به این نتیجه رسیدم که از بک گراند استفاده کنم که در واقع یک روش 100% غیراصولی هست ولی مثل اینکه دیگه چاره ای نمونده