Получить дочерний элемент внутри div, используя «this» - Jquery - PullRequest
0 голосов
/ 12 марта 2020

У меня есть куча HTML контейнеров на странице, и когда я пропускаю oop, чтобы получить каждый "iframeHolder", я не могу получить iframe внутри держателя, чтобы передать ему атрибут.

Используемый мной скрипт находится ниже HTML, есть ли какие-либо предложения о том, как правильно получить дочерний элемент и обновить атрибут без ошибок?

  <div class="row iframeHolder>
    <div class="col-large col-centered position-relative">
      <div class="card mb-4 box-shadow">

          <iframe class="iframes">
            <p>Your browser does not support iframes.</p>
          </iframe>
      </div>
    </div>
  </div>



$('.iframeHolder').each(function() {
      var iframe = $(this, 'iframe');
      console.log(iframe);

      iframe.attr('src', `google.com`);  
});

1 Ответ

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

Похоже, вы просто перевернули аргументы функции. Контекст идет после селектора, а не до:

$('iframe', this);

Пример:

$('.iframeHolder').each(function() {
  var iframe = $('iframe', this);
  iframe.attr('src', 'https://google.com');  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row iframeHolder">
  <div class="col-large col-centered position-relative">
    <div class="card mb-4 box-shadow">

      <iframe class="iframes">
        <p>Your browser does not support iframes.</p>
      </iframe>
    </div>
  </div>
</div>

(Дальнейшие правки в примере включали исправление опечатки в HTML, где вы не закрывали значение атрибута, и изменение google.com на полный URL. Что, конечно, не сработает, если Google не разрешает кадры из других источников, но сам код по-прежнему работает нормально. У меня нет примера от руки на сайте, который позволил бы это.)

...