mstdmstd

В чужом вордпресс плагине ошибка при вызове функции

    5 сообщений в этой теме

    Всем привет,

    Понадобилось поковырять чужой вордпрессовсий плагин WOOEXIM - WooCommerce Export Import Plugin
    И при попытке добавить свой JS функционал наткнулся на странную ошибку что при клике на чекбоксе не находится функция :

    ReferenceError: cbx_attribute_onChange is not defined


    При этом cbx_attribute_onChange нормально вызывается при инциализации :
     

        jQuery(document).ready(function($){
            function cbx_attribute_onChange() {
                var class_cbx_attribute_selection = ''
                $("input.class_cbx_attribute:checked").each(function () {
                    class_cbx_attribute_selection = class_cbx_attribute_selection + $(this).val() + ','
                });
                alert( "cbx_attribute_onChange  class_cbx_attribute_selection::"+var_dump(class_cbx_attribute_selection) )
                $("#cbx_attributes").val( class_cbx_attribute_selection )
            }
            ...
            $(window).trigger('resize');
    
            alert( "ALERT::" )
    
            cbx_attribute_onChange()
    
        });
    


    Ошибка лезет при клике на чкесбоксе

    <input id="cbx_attribute_brand" type="checkbox" class="class_cbx_attribute" value="brand" checked="" onchange="javascript:return cbx_attribute_onChange();">


    На очепятку не похоже - проверил.


    Вживую можно посмотреть тут Admin Ref
     логин admin  111111
    Затем зайти на Page Ref
    и нажать на "Upload and Preview"  и откроется форма с 2мя алертами - все отработало нормально
    Потом нажать на чекбоксе "Brand(brand)"  и будет ошибка

    ReferenceError: cbx_attribute_onChange is not defined




    Если же вынести определение    

    function cbx_attribute_onChange() {


    до блока

        jQuery(document).ready(function($){



    то при первом вызове в блоке jQuery инициализации выскакивает ошибка

     Uncaught TypeError: $ is not a function



    А как правильно ?

      Спасибо !
     

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    смотрите про область видимости переменных. 

    правильнее будет тудаже в ready событие change прописать

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Представленипе о про область видимости переменных у меня есть

    Непонятно почему тут такие проблемы

    Когда пишу свои плагины - я весь JS код выношу как отдельный обьект в отдельный файл - и обращаюсь к нему

     

    Не хочется занаово переписывать...

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Как вариант - внести правки в скрипт и подменять скрипт плагина на свой (wp_deregister_script/wp_register_script)

    1 пользователю понравилось это

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    6 часов назад, hedgehog сказал:

    Как вариант - внести правки в скрипт и подменять скрипт плагина на свой (wp_deregister_script/wp_register_script)

    Подключил отдельным js-файлом через wp_register_style и заработало

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!


    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.


    Войти сейчас