Могу ли я проверить с помощью jQuery, имеет ли элемент указанный класс c, и редактировать только этот элемент? - PullRequest
1 голос
/ 13 марта 2020

if (jQuery("li.store .premise")[0]) {
    jQuery(".address .arrow").remove();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="store">
    <div class="address">
        <span class="arrow"></span>
        <div class="results-toggle">
            <div class="shop-address">
                <div class="street-block">
                    <div class="thoroughfare">demo address</div>
                    <div class="premise">additional info</div>
                </div>
                <div class="addressfield-container-inline locality-block country-BG"><span
                        class="locality">New York</span></div>
                <span class="country">USA</span>
            </div>
            <div class="shop-phone">+1 4258741</div>
        </div>
    </div>
</div>

Есть ли способ проверить, содержит ли элемент указанный класс c, и если он есть, то редактировать только этот или эти элементы.

У меня есть список магазинов, и я хочу, чтобы некоторые из них содержали указанный c класс для удаления стрелок.

Я пытался с этим, но он удаляет все элементы со стрелкой класса, и я хочу удалить единственное хранилище, которое имеет специфицированный c класс, который в этом случае class="premise"

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Ближайшее использование получить родительский элемент, затем найти класс для .arrow, затем удалить метод, используя удаленный.

$(".store .premise").closest(".address").find('.arrow').remove();
1 голос
/ 13 марта 2020

Когда у вас есть коллекция premise с, используйте .closest, чтобы перейти к их предку address, откуда вы можете перейти к .arrow s:

$('div.store .premise').closest('.address').find('.arrow').remove();

(при условии что элемент .store в вашем фактическом коде является <li>, в противном случае используйте div.store или просто .store)

$('div.store .premise').closest('.address').find('.arrow').remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="store">
  <div class="address">
    <span class="arrow">arrow here</span>
    <div class="results-toggle">
      <div class="shop-address">
        <div class="street-block">
          <div class="thoroughfare">demo address</div>
          <div class="premise">additional info</div>
        </div>
        <div class="addressfield-container-inline locality-block country-BG"><span class="locality">New York</span></div>
        <span class="country">USA</span>
      </div>
      <div class="shop-phone">+1 4258741</div>
    </div>
  </div>
</div>
...