PDA

View Full Version : سوال: مشکل در پیدا کردن اندیس عناصر html به وسیله jquery



alismith
جمعه 19 فروردین 1390, 03:22 صبح
سلام
من یه کد نوشتم که وقتی صفحه داره load میشه قراره عناصر li یک ul خاص مثلا id=archive رو بگیره بعد تعداد اونها رو در بیاره و اگه از یه تعدادی بیشتر بود باقی رو hidden کنه اما حالا اون تعداد اضافه رو که می خوام با for اندیسشون رو پیدا کنم و تغییرات نام برده رو اعمال کنم نمی تونم این کار رو انجام بدم

لطفا یه نگاه بندازید ببینید راه حل چیه؟


<script language="javascript">

$(document).ready(function(){

var archiveItem = $("ul[id=archive] li");
var ArchiveLength = archiveItem.length;
if(ArchiveLength >= 5){

var i = 6;
var ix = ArchiveLength;
var li = archiveItem;
for(i; i<=ix; i++){

li[i].hide();

}


}


});

</script>

<ul id="archive">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>




با تشکر

s.m.h.m
جمعه 19 فروردین 1390, 03:46 صبح
سلام

البته تمیزتر هم میشه نوشت:چشمک:


<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.5.js"></script>
<script>
$(document).ready(function () {
var i = 0;
$("#archive li").each(function () {
i++;
if (i >= 6) {
$(this).hide();
}
});
});
</script>
</head>
<body>

<ul id="archive">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>

alismith
جمعه 19 فروردین 1390, 11:48 صبح
فقط یه سوال اگه من لازم داشته باشم حتما اندیس بعضی عناصر رو کنترل کنم مطابق مثال فوق باید چه کار کنم :متفکر:

eleboys
جمعه 19 فروردین 1390, 11:51 صبح
سلام
من یه کد نوشتم که وقتی صفحه داره load میشه قراره عناصر li یک ul خاص مثلا id=archive رو بگیره بعد تعداد اونها رو در بیاره و اگه از یه تعدادی بیشتر بود باقی رو hidden کنه اما حالا اون تعداد اضافه رو که می خوام با for اندیسشون رو پیدا کنم و تغییرات نام برده رو اعمال کنم نمی تونم این کار رو انجام بدم

در ابتدا توصیه اکید بنده به شما اینه که اینکار رو نکنید!! فیلتر کردن داده ها بعد از منتقل شدن به سمت کلاینت کار درستی نیست چراکه کاربر مجبور شده کلی دیتا رو دریافت کنه (حجم صفحه بالا رفته) در صورتی که شما نمی خواید اون ها رو بهش نمایش بدید! پس بهتره این کار رو سمت سرور انجام بدید یعنی فقط همون تعداد li مورد نظرتون رو ایجاد کنید و به کلاینت بفرستید.
اما در هر صورت اگر استراتژی کار شما این روش رو ایجاب می کنه این کد مشکلتون رو حل می کنه:

$(document).ready(function () {
$("#archive li:gt(4)").hide();
});

=================
نوشته های فنی نیما بغدادی...
http://www.nimabaghdadi.ir (http://www.nimabaghdadi.ir/)

alismith
جمعه 19 فروردین 1390, 21:16 عصر
$(document).ready(function () {
$("#archive li:gt(4)").hide();
});


اگه میشه توضیح بدید دقیقا این دستور چکار می کنه :متفکر:
منظورم اینکه چطوری اندیس ها رو مدیریت می کنه؟

با تشکر

eleboys
جمعه 19 فروردین 1390, 22:46 عصر
اگه میشه توضیح بدید دقیقا این دستور چکار می کنه :متفکر:
منظورم اینکه چطوری اندیس ها رو مدیریت می کنه؟

با تشکر

اصل کار این دستور فقط یک سلکتور جی کوئری هست. این سلکتور تمام li هایی رو که فرزند تگی با آیدی archive وهستند رو پیدا می کنه بعد از اون با قرار دادن "gt(4):" منظور ما این هست که مواردی که اندیسشون بیشتر از 4 هست رو بما بده. از اونجا که اندیس از 0 شروع میشه پس این سلکتور 5مورد اول رو کنار میزاره و بعدی ها رو به ما باز می گردونه. و بعد ما متد hide رو روی این سلکتور اجرا می کنیم. پس هر تعداد آیتمی که توسط سلکتور نوشته شده ما پیدا بشه Hide خواهد شد. در صورتی که تعداد موارد یافت شده کمتر از 5 باشه یا حتی هیچ آیتمی با این مشخصات پیدا نشه هیچ اتفاق یا خطایی رخ نمیده (که مد نظر ما هم هست)
=================
نوشته های فنی نیما بغدادی...
http://www.nimabaghdadi.ir (http://www.nimabaghdadi.ir/)