Yii2 jQuery не выполняется, как исправить?

В Layout подключаю свой скрипт
$this->registerJsFile('@web/js/file.js', ['depends' => [\yii\web\JqueryAsset::className()]]);


В исходном коде, вижу, что скрипт подключился ниже всех остальных т.е. после загрузки Jquery.
При этом из искходного файла могу попасть в свой скрипт и прочесть его.
Но сам скрипт не отрабатывает. В качестве проверки сделал функцию по клику на Div Блок.
$('#header-holder').click(function(){
   alert("Okay");
});


Сколько бы ни кликал, не работает. В чем может быть проблема ? Css ТО нормально подключил через ассеты..
  • Вопрос задан
  • 1266 просмотров
Решения вопроса 3
kawabanga
@kawabanga
ошибки смотреть js. Если нет - проверяйте дубликаты ид.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. Не работает сам скрипт или jquery вцелом? Если второе, проверьте не подключен ли он дважды и проверьте консоль на наличие ошибок.
2. $('#header-holder') - это что? Если это модалки или еще, что-то созданое с помощью jquery, то возможно сработает так:
$('body').on('click','#header-holder',function(){
   alert("Okay");
});

3. 98% что yii тут не при чем. Он просто подключает скипт, так что если он есть и доступен по ссылке - yii assets сработал и сработал правильно. Проблемы надо искать в js скриптах.
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Создайте свой AssetBundle для сайтов

namespace app\assets;
use yii\web\AssetBundle;
class ThemeDefaultAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/main.css',
    ];
    public $js = [
        'js/file.js'
    ];

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

layouts
\app\assets\ThemeDefaultAsset ::register($this);

Если нечего не работает
Шаг 2
Открываем консоль
В водим $('#header-holder') enter и смотрим что возвращается если пусто проверяем если в исходнике указанный html элемент с id=header-holder

.click(function(){}
уже некто не использует ( ну почти )
используйте новый синтаксис on/off/trigger
var selectors = {  
    opisivaeSelectorKratko: '#header-holder'
}

// not live
$(selectors.opisivaeSelectorKratko).on('click',  function(e){

});
// live
$('body').on('click', selectors.opisivaeSelectorKratko, function(e){
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы