Twig (или Symfony?) Не запускает мой скрипт jQuery - PullRequest
0 голосов
/ 16 мая 2018

В настоящее время я пытаюсь создать сайт с помощью Symfony 4. Проблема в том, что одна из моих страниц нуждается в скрипте jQuery для работы, часть его работает, но такие функции не вызываются, почему?

Пример кода, который не вызывается:

$(document).ready(function(){
    $(".someClass").click(function (event) {
        event.preventDefault();
        $(".active.focused").toggleClass("active");
        $(".focused").toggleClass("focused");
        $(this).toggleClass("active");
        $(this).toggleClass("focused");
        refresh_contents();  //this is another external function that I don't
                             //manage to call, even  when called in the 
                             //executed part
    });
});

Я уверен, что он не исходит из моего javascript, так как я проверил его "вне-symfony".Заранее спасибо, Crikripex

1 Ответ

0 голосов
/ 18 мая 2018

Хорошо, поэтому после нескольких часов попыток выяснить, в чем и где проблема, я пришел к выводу (благодаря @fyrye), что могут быть проблемы совместимости между jQuery и Symfony4 или Webpack Encore.Затем я решил «перевести» свой код из jQuery в Javascript без какой-либо библиотеки, и он работал нормально.Подводя итог, я перешел от:

$(document).ready(function(){
    $(".someClass").click(function (event) {
        event.preventDefault();
        $(".active.focused").toggleClass("active");
        $(".focused").toggleClass("focused");
        $(this).toggleClass("active");
        $(this).toggleClass("focused");
        refresh_contents();  
    });
});

к:

for(i=0;i<maxId;i++){
    document.getElementById("contain_" + i).onclick = function(event){
            event.preventDefault();
            document.getElementsByClassName("focused")[0].classList.remove("active");
            document.getElementsByClassName("focused")[0].classList.remove("focused");
            document.getElementById(this.id).classList.add("active");
            document.getElementById(this.id).classList.add("focused");
            refresh_contents();
        }
}

Я знаю, что это выглядит не так красиво, не так просто кодировать, как jQuery, но пока этоединственное найденное мной решение, которое действительно работает.

Спасибо всем за помощь.

...