Я пытаюсь определить, содержит ли div iFrame

0

В настоящее время я делаю следующее, но он не работает для меня (т.е. Все еще вызывается, даже если внутри div есть iFrame):

if($('#bodytext-' + postID + ':has(iframe)').length > -1) {

    $(this).parent().append(ytCode);

}

Я делаю что-то неправильно?

  • 0
    Обратите внимание, что в условии нет особой области видимости, так что this должно было бы прийти откуда-то еще!
  • 0
    Просто чтобы прояснить - вы хотите, чтобы добавление происходило только тогда, когда там уже нет iframe?
Показать ещё 1 комментарий
Теги:
if-statement
iframe

3 ответа

2

Если в div нет iFrame, длина результирующего объекта jQuery будет равна 0, что больше, чем -1. Если есть iFrame, длина будет равна 1, что также больше -1.

  • 0
    Даже если я добавлю «.length === 0», он все равно добавит код.
  • 0
    Можете ли вы опубликовать свой HTML?
Показать ещё 5 комментариев
0

Исправлена! Вот что я сделал:

    if($(this).closest('p').find("iframe").length === 0) {

        $(this).closest('p').append(ytCode);

    }
0

Он все еще звонит, даже внутри iframe нет iframe?

Поскольку возвращаемое значение свойства length всегда больше -1. Минимальный - 0 означает, что нет предмета.

Ваш код должен быть

if($('#bodytext-' + postID + ':has(iframe)').length > 0) {

    $(this).parent().append(ytCode);

}
  • 0
    Он вообще не вызывается, если я поставлю это :-(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню