View Full Version : سوال: با جی کوئری چطور می تونم تعداد تگهای دایو رو بدست بیارم؟
idocsidocs
جمعه 07 بهمن 1390, 15:47 عصر
با جی کوئری چطور می تونم تعداد تگهای دایو رو بدست بیارم؟
cyrusthegreat
جمعه 07 بهمن 1390, 16:13 عصر
دوست عزیز
شما می تونید با استفاده از دو متد زیر اینکار رو بکنید. فرض می کنیم دایو هاتون دارای کلاس count باشن. اونوقت کد می شه:
var count = $("div.count").size();
یا
var count = $("div.count").length;
اگرم تعداد کل دایو های صفحه رو می خوایید می شه:
var count = $("div").size();
یا
var count = $("div").length;
idocsidocs
جمعه 07 بهمن 1390, 16:18 عصر
شما می تونید با استفاده از دو متد زیر اینکار رو بکنید. فرض می کنیم دایو هاتون دارای کلاس count باشن. اونوقت کد می شه:
مرسی
تفاوتی بین size و length چیه و کدومشون برای این کار مناسب تر هست؟
همچنین لطفا توی این تاپک هم راهنمایی کنید. (http://barnamenevis.org/showthread.php?325145-%D8%AA%D9%88%DB%8C-%D8%AC%DB%8C-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%A8%DB%8C%D9%86-%D8%A8%D8%B1%D8%AF%D9%86-%DB%8C%D9%87-%D8%AA%DA%AF-%D9%88%D8%A7%D9%84%D8%AF-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%AA%DA%AF%D9%87%D8%A7%DB%8C-%D9%81%D8%B1%D8%B2%D9%86%D8%AF%D8%B4-%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D9%85%DB%8C-%D8%B4%D9%87%D8%9F)
cyrusthegreat
جمعه 07 بهمن 1390, 16:30 عصر
دوست عزیز
این دو هیچ تفاوتی در مقداری که بر می گردونن ندارن. فقط تفاوتشون این هست که length یک خاصیت (property) هست و size() یک متد. و اینکه length سریعتر هست چون شما اگر تو کد Jquery نگاه کنید، متد size() به اینصورت تعریف شده:
size: function() { return this.length; }
یعنی size() همون خاصیت length رو فراخونی می کنی و بخاطر همین چون یک مرحله بیشتر داره برای برگردوندن مقدار، length سریعتر هستش.
idocsidocs
شنبه 08 بهمن 1390, 01:01 صبح
یعنی size() همون خاصیت length رو فراخونی می کنی و بخاطر همین چون یک مرحله بیشتر داره برای برگردوندن مقدار، length سریعتر هستش. یه سوال دیگه:
فرض کنید یه تگ دایو دارای کلاس d2 هست، قبل از این تگ هم یه تگ دایو با کلاس d1 هست. وقتی کاربر روی تگ d2 کلیک می کنه چطور می شه محتویا تگ d1 ره بدست آورد؟
<div class="d1">hi</div>
<div class="d2">click</div>
cyrusthegreat
شنبه 08 بهمن 1390, 10:33 صبح
یه سوال دیگه:
فرض کنید یه تگ دایو دارای کلاس d2 هست، قبل از این تگ هم یه تگ دایو با کلاس d1 هست. وقتی کاربر روی تگ d2 کلیک می کنه چطور می شه محتویا تگ d1 ره بدست آورد؟
<div class="d1">hi</div>
<div class="d2">click</div>
اگر این دو دایو دقیقا پست سر هم باشند خیلی راحت می شه اینجوری محتویات قبلی رو بدست آورد:
$("div.f2").prev();
و اگر پشت سر هم نباشن، ولی بین اونها دایو دیگه ای موجود نباشه می تونید از متد زیر استفاده کنید:
$("div.f2").prev("div");
idocsidocs
شنبه 08 بهمن 1390, 14:03 عصر
اگر این دو دایو دقیقا پست سر هم باشند خیلی راحت می شه اینجوری محتویات قبلی رو بدست آورد:
$("div.f2").prev();
و اگر پشت سر هم نباشن، ولی بین اونها دایو دیگه ای موجود نباشه می تونید از متد زیر استفاده کنید:
$("div.f2").prev("div");
این کد از نظر دستوری درسته؟
$(this).prev(".4link4").append(out);
می شه بگید توی جاوا اسکریپت چطور می شه اعداد صحیح رو تشخیص داد؟
cyrusthegreat
شنبه 08 بهمن 1390, 14:38 عصر
این کد از نظر دستوری درسته؟
$(this).prev(".4link4").append(out);
می شه بگید توی جاوا اسکریپت چطور می شه اعداد صحیح رو تشخیص داد؟
بله این کد از نظر دستوری درست می باشد.
در مورد عدد صحیح اگر مطمئنی که ورودی حتما عدده که از کد زیر استفاده کن:
function intDetector (n) {
if( n % 1 == 0 )
return true;
else
return false;
}
یا کد زیر:
function intDetector (n) {
return n % 1 == 0;
}
هر دوتاش true یا false بر می گردونن.
اگرم مطمئن نیستی از کد های زیر استفاده کن :
function intDetector (n) {
if( typeof n == 'number' && n % 1 == 0 )
return true;
else
return false;
}
یا:
function intDetector (n) {
return typeof n == 'number' && n % 1 == 0;
}
idocsidocs
شنبه 08 بهمن 1390, 14:56 عصر
بله این کد از نظر دستوری درست می باشد.
ساختار html صفحه من به این صورت هست:
<span class="4link4">
</span>
<div>
<a href="/link" class="jsclick" >click</a>
</div>
وقتی کاربر روی لینک کلیک می کنه از دستور زیر استفاده می کنم تا محتویات تگ اسپن رو پر کنم ولی هیچ اتفاقی نمیافته. مشکل چیه؟
$(this).prev(".4link4").append(out);
cyrusthegreat
شنبه 08 بهمن 1390, 15:36 عصر
ساختار html صفحه من به این صورت هست:
<span class="4link4">
</span>
<div>
<a href="/link" class="jsclick" >click</a>
</div>
وقتی کاربر روی لینک کلیک می کنه از دستور زیر استفاده می کنم تا محتویات تگ اسپن رو پر کنم ولی هیچ اتفاقی نمیافته. مشکل چیه؟
$(this).prev(".4link4").append(out);
من حدس زدم مشکل از این هست خود a فرزند یک والد هست و اون والد با span ما می تونه ترتیب prev و next پیدا کنه در نتیجه کد رو اینجوری تغییر دادم و جواب داد:
$(this).parent().prev(".4link4").append(out);
idocsidocs
شنبه 08 بهمن 1390, 16:07 عصر
من حدس زدم مشکل از این هست خود a فرزند یک والد هست و اون والد با span ما می تونه ترتیب prev و next پیدا کنه در نتیجه کد رو اینجوری تغییر دادم و جواب داد:مرسی مشکل حل شد اما طبق تعریف جی کوئری باید از بین تگهای قبلی، اولین تگ رو بر گردونه و والد یا فرزند بودن نباید تاثیری توی این موضوع داشته باشه. این برداشت درسته؟ لطفا توضیح بدید.
در مورد تابع زیر: بنظرتون این تابع درست اجرا می شه؟ چون تقسیم هر عددی بغیر از 0 بر یک، برابر همون عدد می شه و هیچ وقت 0 نمی شه !
function intDetector (n) {
if( n % 1 == 0 )
return true;
else
return false;
}
cyrusthegreat
شنبه 08 بهمن 1390, 16:20 عصر
مرسی مشکل حل شد اما طبق تعریف جی کوئری باید از بین تگهای قبلی، اولین تگ رو بر گردونه و والد یا فرزند بودن نباید تاثیری توی این موضوع داشته باشه. این برداشت درسته؟ لطفا توضیح بدید.
در مورد تابع زیر: بنظرتون این تابع درست اجرا می شه؟ چون تقسیم هر عددی بغیر از 0 بر یک، برابر همون عدد می شه و هیچ وقت 0 نمی شه !
function intDetector (n) {
if( n % 1 == 0 )
return true;
else
return false;
}
در مورد اون .prev() من هم همین فکر رو می کردم. ولی مثل اینکه نحوه عملکرد Jquery متفاوت هستش. حالا یه تحقیقی می کنم ببینم چرا اینجوری رفتار می کنه.
دوست عزیز، % هست نه /. % باقیمانده بر اون عددی رو که بعدش هست رو بر می گردونه.
idocsidocs
شنبه 08 بهمن 1390, 16:25 عصر
منم توی این رفتار جی کوئری موندم !
الان این کد اجرا می شه ولی بجای اینکه آخرین فیلد فرم رو حذف کنه، کل محتویات رو به همراه خود تگ حذف می کنه. بنظرتون مشکل چیه؟
$(this).parent().prev(".4link4 input:last").remove();
cyrusthegreat
شنبه 08 بهمن 1390, 16:30 عصر
میشه HTML و کدی که برای اضافه کردن و حذف کردن هست رو بزارید؟؟؟؟
idocsidocs
شنبه 08 بهمن 1390, 17:19 عصر
میشه HTML و کدی که برای اضافه کردن و حذف کردن هست رو بزارید؟؟؟؟ کدهای صفحه همینها هستند و چیز خاصی نداره.
<span class="4link4">
</span>
<div>
<a href="/link" class="jsclick" >click</a>
</div>این هم کد جی کوئری:
$(".jsclick").click(function(){
$(this).parent().prev(".4link4 input:last").remove();
return false;
});
چه فیلد فرم داخل تگ باشه و چه نباشه تگ والد و محتویات رو حذف می کنه !
cyrusthegreat
شنبه 08 بهمن 1390, 23:59 عصر
کدهای صفحه همینها هستند و چیز خاصی نداره.
<span class="4link4">
</span>
<div>
<a href="/link" class="jsclick" >click</a>
</div>این هم کد جی کوئری:
$(".jsclick").click(function(){
$(this).parent().prev(".4link4 input:last").remove();
return false;
});
چه فیلد فرم داخل تگ باشه و چه نباشه تگ والد و محتویات رو حذف می کنه !
دوست عزیز
راه حل مشکل شما این هست:
$(this).parent().prev(".4link4").children(":last").remove();
idocsidocs
یک شنبه 09 بهمن 1390, 00:22 صبح
راه حل مشکل شما این هست:
چرا باید از children استفاده کنم؟ وقتی کد زیر رو بکار می برم جی کوئری باید متوجه بشه که منظورم چیه !
$(this).parent().prev(".4link4 input:last").remove();
cyrusthegreat
یک شنبه 09 بهمن 1390, 00:53 صبح
چرا باید از children استفاده کنم؟ وقتی کد زیر رو بکار می برم جی کوئری باید متوجه بشه که منظورم چیه !
$(this).parent().prev(".4link4 input:last").remove();
دوست عزیز
ساختار و کدی که برای متد prev در Jquery نوشته شده بگونه هست که این اجازه رو نمی ده. prev فقط برای سلکت کردن اون عنصری هست که دقیقا قبل از عنصر ما موجوده. این به همون دلیل که نمی شد از تو div اون span رو انتخاب کرد. دقیقا عنصری که قبل هست اگر اون کلاس رو داشته باشه انتخاب می شه در غیر اینصورت انتخاب نمی شه. prev اینگونه نوشته شده.
idocsidocs
یک شنبه 09 بهمن 1390, 01:09 صبح
ساختار و کدی که برای متد prev در Jquery نوشته شده بگونه هست که این اجازه رو نمی ده. prev فقط برای سلکت کردن اون عنصری هست که دقیقا قبل از عنصر ما موجوده. این به همون دلیل که نمی شد از تو div اون span رو انتخاب کرد. دقیقا عنصری که قبل هست اگر اون کلاس رو داشته باشه انتخاب می شه در غیر اینصورت انتخاب نمی شه. prev اینگونه نوشته شده.
متد مشخصی نیست که بشه باهاش این محدودیت رو بطرف کرد؟ یعنی عننصر قبلی رو انتخاب کنیم ولی این عنصر لزوما قبل از تگ فعلی نباشه؟
cyrusthegreat
یک شنبه 09 بهمن 1390, 01:30 صبح
متد مشخصی نیست که بشه باهاش این محدودیت رو بطرف کرد؟ یعنی عننصر قبلی رو انتخاب کنیم ولی این عنصر لزوما قبل از تگ فعلی نباشه؟
یک متد دیگر هست به نام prevAll که البته این هم باز در همون تگ هایی که در والد هستند می گرده و پیدا می کنه ولی با این تفاوت که تمام رو انتخاب می کنه و اگر براش مقداری تعریف کنید بر روی همه امتحان می کنه و انتخاب می کنه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.