PDA

View Full Version : سوال: نحوه تشخیص وجود یک element در Java Script



Mehrdad Noori
پنج شنبه 06 بهمن 1390, 22:30 عصر
سلام دوستان

در شرایطی خاص ( همون که الان بهش برخوردم :لبخند: ) نیاز دارم بدونم آیا تگ li من دارای تگ فرزند ul هست یا نه .

اگر داشت روش کار خاصی انجام بدم و اگر هم نداشت باز هم کار خاصی انجام بدم . :لبخند:

خب کد سلکتور مربوط به Java scritp بود یا مربوط به خود کتابخانه Jquery مشکلی نیست . مرسی و سپاس

راستی من این کد رو برای منو باز شوم می خوام که برای تگ اصلی اش هم ID مشخص کردم و می تونم به اون ul مورد نظرم دسترسی داشته باشم . فقط نمی دونم چه شرطی باید براش بزارم

yones_safari
پنج شنبه 06 بهمن 1390, 23:03 عصر
سلام و درود
میتونی از children به شکل زیر استفاده کنی.

$('li').click(function(){
$(this).children('ul').css('background-color', 'red');
});

Mehrdad Noori
پنج شنبه 06 بهمن 1390, 23:07 عصر
نه یونس جان من دارم واسش دستور می نویسم که اگر li ما احیانا ul داشت به متغیر خاصی مقداری انتساب داده بشه . حالا دنبال یک تابعی چیزی میگردم که li رو بهش بدم و با true و false بهم بگه که ul فرزندی داره یا نه .

yones_safari
پنج شنبه 06 بهمن 1390, 23:16 عصر
دادا سورس کد رو بزار.من چیزی نتونستم از حرفات بفهمم.

Mehrdad Noori
پنج شنبه 06 بهمن 1390, 23:22 عصر
بزار کمی صورت مسئله رو ساده کنم

می خوام اگر li دارای ul داخلی بود پیغام بده "دارد" و اگر نداشت پیغام بده "ندارد" . به همین سادگی به همین خوشمزگی :لبخند:

yones_safari
پنج شنبه 06 بهمن 1390, 23:31 عصر
فکر کنم منظورتو فهمیدم:چشمک:
http://api.jquery.com/child-selector/
مثالی که زده همونیه که تو میخوای.

Mehrdad Noori
جمعه 07 بهمن 1390, 17:45 عصر
یونس جان ممنون از لطفت ولی اون شرطی که من نیاز داشتم اونجا ندیدم . اگر امکانش هست همین کد رو برام بنویس.


اگر li دارای ul داخلی بود پیغام بده "دارد" و اگر نداشت پیغام بده "ندارد"

متشکرم

yones_safari
جمعه 07 بهمن 1390, 19:02 عصر
کد زیر اگه li ، ul داشته باشه true مینویسه.اگه هم نداشته باشه چیزی نمینویسه.

$(function(){

$("li").has("ul").append("true");
});

Mehrdad Noori
جمعه 07 بهمن 1390, 21:39 عصر
:ناراحت: راستش نفهمیدم !

has فکر کنم کار نمی کنه !
خب من اگر بخوام اینو داخل شرط استفاده کنم چطوری میشه . ببین می تونی اینی که می خوام رو برام بنویسی ؟
یک شرط داشته باشیم که اگر اون ul مورد نظر موجود بود بود alert بده دارد وگرنه بگه ندارد . اون شرطش واسم خیلی مهمه :چشمک:





var ir=jQuery.noConflict()
ir(document).ready(function() {
var s=true;
ir("#menu-list ul li").mouseenter(function() {
if(s){
ir('ul', this).slideDown(200);
s=false;
}
});
ir("#menu-list ul li").mouseleave(function() {

ir('ul', this).slideUp(100,function(){
s=true;
});

});
});



خط هفتم رو ببین
اون خط باید براساس شرط مقدار دهی . بشه یعنی اگر li ما ul داشت این کار بشه و در غیر این صورت کاری انجام نشه

yones_safari
جمعه 07 بهمن 1390, 22:36 عصر
دادا میخوای چه منویی بسازی؟؟؟؟بگو تا من برات بسازم!!!چون فکر کنم تو راه رو اشتباه میری!!!تو ساخت منو نیاز به تست و اینجور چیزا نیست.منوت رو بگو بسازم.:چشمک:

Mehrdad Noori
جمعه 07 بهمن 1390, 23:26 عصر
یک منوی jquery ساده :لبخند:

ببین بعضی از منو های jquery که توی سایت های مختلف می بینیم یک مشکل بزرگ وجود داره و اونم اینه که اگر چند بار روی اون منو ماوس رو حرکت بدیم بعد از خروج ماوس از روش چند باری اضافه زیر منو اش ( منو آبشاری اش ) باز میشه .

مثلا این (http://dorparasti.persiangig.com/document/CSS_JQuery_Menu_Demo.htm)یک نمونه که الان پیدا کردم . باگ داره

توضیح اش مفصله . من اگر بتونم این شرطی که می خوام رو داخل کدم قرار بدم مشکل منو ام حل میشه . فقط می خوام بدونم چطور میتونم یک شرط منطقی رو مطرح کنم که مشخص کنه آیا li مورد نظر ما ul دارد یا نه ! همین !

حالا اگر بتونی یک منو ساده واسم بنویسی که با slideDown و slideUp کار کنه ممنون میشم . ولی باگ نداشته باشه . یک ماهه درگیر این باگم :افسرده:

yones_safari
جمعه 07 بهمن 1390, 23:45 عصر
این مشکل از سرعت انیمیشن هستش.ببین تو منوی زیر اینطوری نیست.:چشمک:
http://www.avadesigner.com/wp-content/uploads/2011/11/jQuery-menu.html

Mehrdad Noori
شنبه 08 بهمن 1390, 15:42 عصر
چرا دیگه تو اینم هست . یکم چند باری موس رو روی منو ها جابه جا کن می بینی که داره بندری میره . البته با سرعت بیشتر :لبخند:

اون چیزی که می خواستم پیدا کردم . این بود :



$("li").children('ul').length>0

در کل کدم این شکلی شد :



var ir=jQuery.noConflict()
ir(document).ready(function() {

var s=true;
ir("#menu ul li").mouseenter(function() {
if(s){
ir('ul:first', this).slideDown(100);
if( ir(this).children('ul').length>0 ){
s=false;
}else{
s=true;
}
}
});

ir("#menu ul li").mouseleave(function() {

ir('ul', this).slideUp(100,function(){
s=true;
});

});
});



ممنون برای راهنمایی هات :قلب:

exlord
یک شنبه 09 بهمن 1390, 12:05 عصر
برای حل مشکل باز شدن متعدد منو ها وقتی که ماوس از روشون زود رد میشه میتونینی از پلاگین HoverIntent استفاده کنین مخصوص همین کار نوشته شده ...
http://cherne.net/brian/resources/jquery.hoverIntent.html
تو باز شده منو تاخیر میندازه اگه ماوس روش وایساد باز میشه ...
JQ('.main-menu li.parent,.top_menu li.parent,.login-top-header li').hoverIntent({
sensitivity:1,
interval:50,
over:function () {
var menu = JQ(this);
menu.children('ul').show(300);
},
timeout:25,
out:function () {
var menu = JQ(this);
menu.children('ul').hide(100);
}
});