Поддержка Проблемы и решения Как удалить атрибуты width и height везде, кроме single и page

  • Добрый день.
    Один из js файлов шаблона содержит внутри функции jQuery следующий участок кода:

    $('img').each(function(){
                     $(this).removeAttr('width')
                     $(this).removeAttr('height');
                    });

    Это нужная и полезная функция (для данного проекта), НО, только не в самих постах и страницах. Я не очень силён (точнее, откровенно слаб) в JavaScript и в jQuery в частности, поэтому прошу помощи.
    Как мне отключить эту функцию в single и page, но оставить на главной, архиве, поиске и т.д.

    Заранее благодарен

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • versusbassz

    Спасибо за ссылку. Я так понимаю, что нужно просто устроить внутри функции проверку, и если is_page() и is_single() будут возвращать false, то запускать эту функцию?

    Проблема в том, что я, как уже говорил, очень плохо знаю программирование. Буду очень вам признателен, если вы поможете мне с этим несложным (как я подозреваю) кодом.

    Но даже если нет, всё равно, спасибо вам за помощь.

    if ( is_page() ) {
        echo 'это будет показано только на статичных страницах';
    }
    
    if ( is_single() ) {
        echo 'это будет показано только на синглах записей';
    }
    
    if ( ! is_page() ) {
        echo 'везде кроме статичных страниц';
    }
    
    if ( ! is_page(9) ) {
        echo 'везде кроме страницы с id 9';
    }

    И так далее.

    Модератор Юрий

    (@yube)

    В самом js можно проверять $(body).hasClass('single') и $(body).hasClass('page'), если в теме используется <body <?php body_class(); ?>>

    Извините, полностью писать скрипт и тестировать его нет времени.

    versusbassz

    Написал вот так, но скрипт не срабатывает (не удаляются атрибуты).

    if ( ! is_single() ) {
    			$('img').each(function(){
    				$(this).removeAttr('width')
    				$(this).removeAttr('height');
    			});
    		};

    Что-то я делаю не так, похоже

    Да, Юрий, так даже лучше будет. Далее js-код:

    if ( $('body').hasClass('single') ) {
        // ваш код
    }
    
    if ( $('body').hasClass('page') ) {
        // ваш код
    }

    smargelov, php код надо обрамлять в <?php ?> =)

    Сделал вот так корявенько. Всё заработало.
    (Только не смейтесь, ладно)

    if ( $('body').hasClass('single') ) {
    		} else if ( $('body').hasClass('page') ) {
    		} else{
    			$('img').each(function(){
    				$(this).removeAttr('width')
    				$(this).removeAttr('height');
    			});
    		};

    Подскажите мне, ламеру, как избавиться от else (ведь здесь достаточно одного if, правда?) и объединить проверки page и single?

    if ( $('body').hasClass('single') || $('body').hasClass('page') ) {
    
        $('img').each(function(){
            $(this).removeAttr('width')
            $(this).removeAttr('height');
        });
    
    }

    несколько неоптимизированно, но должно работать 🙂

    versusbassz

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

    Модератор Юрий

    (@yube)

    if ( ! $(‘body’).hasClass(‘single’) && ! $(‘body’).hasClass(‘page’) ) {

    Модератор Юрий

    (@yube)

    Может, скобки понадобятся, черт его знает, того жабаскрипта 🙂

    Юрий

    Да спасибо. Всё заработало.

    versusbassz

    И вам спасибо за бесплатный урок JS )))

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Как удалить атрибуты width и height везде, кроме single и page» закрыта для новых ответов.