GHM
5 سال پیش توسط GHM مطرح شد
7 پاسخ

حدف کلاس‌ها توسط یک شرط

سلام. این اسکریپت تا اینجا بخوبی کار میکنه:

// Go to Comment.
$(".comment-teaser .comment").click(function () {
    var share = $(this).find(".share");
    var item = $(this).find(".share .dropdown-item");
    share.toggleClass("dropen");
    item.html('<i class="f-a fa-external"></i> برو به این کامنت');
    item.click(function () {
        window.location.href = item.attr("href");
    });
});

مشکل اینجا شروع میشه، اینو به کدهای بالا اضافه کردم برای حذف همه‌ی کلاس‌های dropen:

$(".comment-teaser .dropen").removeClass("dropen");

اینطوری هم تست کردم نشد:

$(".comment-teaser").find(".dropen").removeClass("dropen");

راه‌های دیگه هم نشد، اما به اینصورت اوکیه:

  if($(".comment-teaser .share").hasClass("dropen")) {
    setTimeout(function(){
      $(".comment-teaser .dropen").removeClass("dropen");
    }, 10);
  };

ولی احساس میکنم با setTimeout دارم ماست‌مالی میکنم، میخوام مطمئن بشم راه‌حل بهتری وجود داره یا نه؟
پ.ن: من جی‌کوئری رو تا همینجاهاش بلدم بیشتر از این دیگه همیشه ماست‌مالی میکردم و امیدوارم که عذاب وجدان ماست‌مالی نگیرتم!


ثبت پرسش جدید
امیر حسین شریفی
تخصص : Web Developer
@amirsharifi 5 سال پیش مطرح شد
1

سلام به وسیله Attribute هم می تونید تست کنید.

$(".comment-teaser .dropen").attr("class", "comment-teaser");

GHM
تخصص : دولوپر نیمه‌استک
@GHM 5 سال پیش مطرح شد
0

@amirsharifi سلام. نمیتونم کلاس‌ها رو override کنم چون کامنت‌ها و استایل‌های متفاوتی داریم.
البته مشکل خیلی جدی نیست چون کارم راه افتاده فقط میخوام ببینم راه بهتری هست یا همینو درست رفتم چون قسمت‌های دیگه هم به همین سبک setTimeout ماست‌مالی کردم


مسعود فرامرزی‌راد
تخصص : Front-end Developer
@sm.faramarzirad 5 سال پیش مطرح شد
1

درود @GHM.
من فکر می‌کنم شما تو select کردن اشتباه دارید.
اگر منظور شما اینه که المانی/المان‌هایی که داری کلاس‌های dropen یا comment-teaser هستند را انتخاب کند و سپس روی آن‌ها کاری کن باید به این ترتیب عمل کنید:
$(".comment-teaser, .dropen")
و اگر منظور شما اینه که المان/المان‌هایی که هم کلاس dropen و هم کلاس comment-teaser را دارند، باید به این ترتیب انتخاب کنید:
$(".comment-teaser.dropen")
به "و" "یا" "," "" توجه کنید.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

@sm.faramarzirad
اگر در گفتگویی کد یا اروری میفرستید لطفا نکته زیر رو دقت کنید
چون در صورت رعایت نکردن مبجور به حذف پاسخ‌ها و گفتگوها میشیم .

لطفا قبل از ارسال گفتگو، بر روی دکمه پیش‌نمایش کلیک کنید. تا از درست بودن نکته ارسال کد و ارور‌ مطمئن شوید.


GHM
تخصص : دولوپر نیمه‌استک
@GHM 5 سال پیش مطرح شد
0

@sm.faramarzirad
@amirsharifi
@hesammousavi
ممنون از همه دوستان مسئله رو به شیوه دیگه‌ای حل کردم(سلکتور قسمتی دیگه رو تغییر دادم). به یک نتیجه‌ای رسیدم که بعضی چالش‌ها رو خودمون بزرگ میکنیم و الکی درگیرش میشیم درصورتیکه با یک "نگاه ساده‌تر" داستان عوض میشه.

// Go to Comment.
$(".comment-teaser .comment").click(function () {
    $(this).find(".share .dropdown-item").html('<i class="f-a fa-external"></i> برو به این مطلب');
    $(this).find(".share .dropdown-btn").trigger("click");
});

مسعود فرامرزی‌راد
تخصص : Front-end Developer
@sm.faramarzirad 5 سال پیش مطرح شد
0

@hesammousavi
بخش ارسال پاسخ مشکل داره.
من کدها رو بین ۳تا پیچ(`) می‌ذارم.
قبل ارسال پیش‌نمایش رو هم می‌زنم.
ولی کدها و متن رو اون جوری که می‌خوام نمایش نمی‌ده.
وقتی متن راست‌به‌چپه، کدها درست نیستن، وقتی چپ‌به‌راسته، نوشته‌های فارسی اشتباه می‌شه.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

@sm.faramarzirad
این همه آدم دارن درست انجامش میدن پس مشکلی توش نیست
وارید لینک زیر بشید و شماره 9 رو مطالعه کنید
https://roocket.ir/faq


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام