0

В своем коде я проверяю div на наличие высоты больше 50px. Я хочу добавлять к нему класс и элемент(видно в коде), если он выше и использую для этого this.

Вот сам код:

if ($('.reviewer-text').height() > 50) {
    $(this).addClass('fullHidden');
    $(this).after('<div class="reviewer-text-open">Читать дальше</div>');
}

Консоль выдает ошибку Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined

Как я понимаю, в this не попадают элементы, которые подходят условиям и он попросту пустой. Возможно this не применим к if/else? Буду рад любой помощи!

UPD:

Нашел решение:

$(".reviewer-text").each(function(){
    var _self = $(this);
if (_self.height() &gt; 50){
    _self.addClass('fullHidden');
    _self.after('&lt;div class=&quot;reviewer-text-open&quot;&gt;Читать дальше&lt;/div&gt;');

} });

Источник

  • 1
    Где в представленном коде createDocumentFragment? – Алексей Шиманский Jan 16 '21 at 17:28
  • @АлексейШиманский after вызывает его, если не ошибаюсь – Mihail Shulezhko Jan 16 '21 at 17:32
  • Расположите пожалуйста в вопрос весь свой код (html и js), чтобы можно было разобраться – Алексей Шиманский Jan 16 '21 at 17:33
  • Возможно this не применим к if/else --- если он не в каком-либо методе jquery или его колбэке, то да, не применим. Надо посмотреть контекст применения – Алексей Шиманский Jan 16 '21 at 17:36
  • Код выложить не могу) Но да, это весь код, без методов выше Хотелось бы понять, как можно было бы завернуть этот код так, чтобы в this попадали именно те блоки, которые отвечают условиям – Mihail Shulezhko Jan 16 '21 at 17:41
  • Но код находится в каком-то методе или функции, которая срабатывает по какому-либо событию? Или нет? Не ясно. Или это при полной загрузке документа работает? Опять же это какой-то метод.. $(this) - по задумке должен указывать на $('.reviewer-text') ? Не хватает данных и контекста – Алексей Шиманский Jan 16 '21 at 17:45
  • По задумке - да. Грубо говоря добавить класс fullHidden ко всем .reviewer-text, которые выше 50px. Код не находится ни в чем, простая проверка – Mihail Shulezhko Jan 16 '21 at 17:47

1 Answers1

1

Скорее всего ошибка не в этом коде, он не может определить переменную/метод 'createDocumentFragment', посмотри может он где-то используется у тебя во всём коде.

SPR1NG
  • 111
  • 1
  • Та вроде нет, вот весь код который затрагивает участок html, с которым я сейчас работаю

    if ($('.reviewer-text').height() > 50) { $(this).addClass('fullHidden'); $(this).after('<div class="reviewer-text-open">Читать дальше</div>'); } $('.reviewer-text-open').click(function(){ $(this).siblings('.reviewer-text').removeClass('fullHidden'); $(this).addClass('hiddenButton'); });

    – Mihail Shulezhko Jan 16 '21 at 17:29
  • В ошибке из консоли так же упоминается сам jquery файл

    at xe (jquery-3.5.1.min.js:2) at Pe (jquery-3.5.1.min.js:2) at S.fn.init.after (jquery-3.5.1.min.js:2) at main.js:167

    – Mihail Shulezhko Jan 16 '21 at 17:31
  • если ты работаешь в vs code, то там есть лупа, слева под всеми файлами, можешь туда вбить "createDocumentFragment" и посмотреть где он используется – SPR1NG Jan 16 '21 at 17:35
  • Работаю в sublime, попробую поставить vs и затестить, спасибо – Mihail Shulezhko Jan 16 '21 at 17:44