2015-04-11 3 views
-1

У меня есть страница wordpress, в которой я генерирую элемент контента для каждого сообщения. Чтобы проверить, я создал 4 сообщения, которые генерируют элементы контента отлично. В некоторых случаях в сообщении есть некоторые изображения. Для этого я использую плагин слайдера wp. Иногда слайдер перемещается влево, иногда вправо. И тогда мне придется плавать в другом тексте как слайдер.добавить определенный класс в абзац, когда div имеет конкретный класс, используя jQuery

Во всяком случае, я пытаюсь поместить текст влево, когда изображение плавает вправо и наоборот. Я использую jQuery для достижения этого. Но я боюсь.

if($('.blockcontent div').hasClass('slider-right')){ 
    $('.blockcontent p').removeClass('pright'); 
    $('.blockcontent p').addClass('pleft'); 
} 

else if($('.blockcontent div').hasClass('slider-left')){ 
    $('.blockcontent p').removeClass('pleft'); 
    $('.blockcontent p').addClass('pright'); 
} 

else{ 
    $('.blockcontent p').removeClass('pright'); 
    $('.blockcontent p').removeClass('pleft'); 
} 

Если ДИВ в классе blockcontent будет плавать вправо (class="slider-right"), то p должен иметь класс плавать вправо.

Проблема в том, что каждый абзац плавает в одном направлении. Причина в том, что он добавляет этот класс в каждый пункт, правильно? Но я не могу добавить этот класс только к этому div.

Это не проблема, если бы я мог сделать это статическим, но он должен быть динамическим.

Есть ли уловка или может дать кому-нибудь, пожалуйста, дайте мне несколько советов?

EDIT:

Здесь вы можете увидеть мою HTML структуру:

<div id="container"> 
    <div class="block"> 
     <h2>test1</h2> 
     <br /> 
     <div class="blockcontent"> 
      <p>this is test 1</p><br /> 
     </div> 
    </div> 

    <div class="block"> 
     <h2>test2</h2> 
     <br /> 
     <div class="blockcontent"> 
      <p>this is test 2</p><br /> 
      <div style="max-width: 700px;" class="metaslider metaslider-flex metaslider-21 ml-slider slider-left"> 
     </div> 
    </div> 
</div> 
+0

Если '$' 'быть $ ('blockcontent р.')'? –

+0

Извините, моя вина. Не знаю, почему это не в вопросе. Это в исходном коде :) – Tyler

ответ

1

Использование find() для проверки дочерних элементов и добавить class.

Подобно ниже: (. Blockcontent р)

$(".blockcontent div").each(function() { 
    if($(this).hasClass('slider-right')){ 
     $(this).parent().find("p").removeClass('pright'); 
     $(this).parent().find("p").addClass('pleft'); 
    } 

    else if($(this).hasClass('slider-left')){ 
     $(this).parent().find("p").removeClass('pleft'); 
     $(this).parent().find("p").addClass('pright'); 
    } 
    else{ 
     $(this).parent().find("p").removeClass('pright'); 
     $(this).parent().find("p").removeClass('pleft'); 
    } 
}); 
+0

Я попробовал это аналогичным образом. Проблема в том, что класс 'slider-right' не является классом' .blockcontent'. Его класс '.blockcontent div'. Но тогда '$ (this) .find (" p ")' больше не будет работать, потому что 'p' не является дочерним элементом' .blockcontent div'. Надеюсь, вы понимаете мою проблему :) – Tyler

+0

Я добавил структуру HTML, пожалуйста, см. Мой вопрос :) – Tyler

+0

Cool use '$ (this) .parent(). Find (" p ")' Еще вы можете использовать '.siblings() 'api также :) – mohamedrias