jQuery Uncaught TypeError: Невозможно прочитать свойство 'fn' из неопределенного (анонимная функция)

Все, Я получаю сообщение об ошибке из моего загруженного кода. Вот код:

/*----------------------------------------------------------------------*/
/* wl_Alert v 1.1 
/* description: Handles alert boxes
/* dependency: jquery UI Slider, fadeOutSlide plugin
/*----------------------------------------------------------------------*/


$.fn.wl_Alert = function (method) {
var args = arguments;
return this.each(function () {

    var $this = $(this);


    if ($.fn.wl_Alert.methods[method]) {
        return $.fn.wl_Alert.methods[method].apply(this, Array.prototype.slice.call(args, 1));
    } else if (typeof method === 'object' || !method) {
        if ($this.data('wl_Alert')) {
            var opts = $.extend({}, $this.data('wl_Alert'), method);
        } else {

            var opts = $.extend({}, $.fn.wl_Alert.defaults, method, $this.data());
        }
    } else {
        $.error('Method "' + method + '" does not exist');
    }


    if (!$this.data('wl_Alert')) {

        $this.data('wl_Alert', {});

        //bind click events to hide alert box
        $this.bind('click.wl_Alert', function (event) {
            event.preventDefault();

            //Don't hide if it is sticky
            if (!$this.data('wl_Alert').sticky) {
                $.fn.wl_Alert.methods.close.call($this[0]);
            }

            //prevent hiding the box if an inline link is clicked
        }).find('a').bind('click.wl_Alert', function (event) {
            event.stopPropagation();
        });
    } else {

    }
    //show it if it is hidden
    if ($this.is(':hidden')) {
        $this.slideDown(opts.speed / 2);
    }

    if (opts) $.extend($this.data('wl_Alert'), opts);
});

};

$.fn.wl_Alert.defaults = {
speed: 500,
sticky: false,
onBeforeClose: function (element) {},
onClose: function (element) {}
};
$.fn.wl_Alert.version = '1.1';


$.fn.wl_Alert.methods = {
close: function () {
    var $this = $(this),
        opts = $this.data('wl_Alert');
    //call callback and stop if it returns false
    if (opts.onBeforeClose.call(this, $this) === false) {
        return false;
    };
    //fadeout and call an callback
    $this.fadeOutSlide(opts.speed, function () {
        opts.onClose.call($this[0], $this);
    });
},
set: function () {
    var $this = $(this),
        options = {};
    if (typeof arguments[0] === 'object') {
        options = arguments[0];
    } else if (arguments[0] && arguments[1] !== undefined) {
        options[arguments[0]] = arguments[1];
    }
    $.each(options, function (key, value) {
        if ($.fn.wl_Alert.defaults[key] !== undefined || $.fn.wl_Alert.defaults[key] == null) {
            $this.data('wl_Alert')[key] = value;
        } else {
            $.error('Key "' + key + '" is not defined');
        }
    });

}
};

//to create an alert box on the fly
$.wl_Alert = function (text, cssclass, insert, after, options) {
//go thru all
$('div.alert').each(function () {
    var _this = $(this);
    //...and hide if one with the same text is allready set
    if (_this.text() == text) {
        _this.slideUp($.fn.wl_Alert.defaults.speed);
    }
});

//create a new DOM element and inject it
var al = $('<div class="alert ' + cssclass + '">' + text + '</div>').hide();
(after) ? al.appendTo(insert).wl_Alert(options) : al.prependTo(insert).wl_Alert(options);

//return the element
return al;
};

Кто-нибудь видел этот тип ошибки раньше? Как бы я решить что-то вроде этого? Спасибо за любой совет, который у вас есть!

 Šime Vidas30 мая 2012 г., 00:15
На какой строке выдается ошибка? Какое именно выражение является причиной?
 Šime Vidas30 мая 2012 г., 00:18
Так,$ не определено Это означает, что jQuery загружен неправильно (или какой-либо другой скрипт повредил$ переменная). Это все, что я могу сказать, основываясь на информации, которую вы предоставляете в настоящее время.
 user104867630 мая 2012 г., 00:13
@ ImeVidas Я не верю, что это так. При просмотре исходного кода объекты jQuery загружаются перед этим файлом.
 Šime Vidas30 мая 2012 г., 00:11
Ваш код выполняется до загрузки jQuery. Убедитесь, что библиотека jQuery выполняется перед приведенным выше кодом.
 user104867630 мая 2012 г., 00:20
@ & # x160; imeVidas Я использую Wordpress, у которого нет конфликта с jQuery. Нужно ли что-то делать с приведенным выше кодом, чтобы сделать это не проблема?

Ответы на вопрос(13)

var JJ= jQuery.noConflict(); 
JJ('.back').click(function (){
    window.history.back();
}); 

Измените все $ на JJ.

 22 дек. 2016 г., 19:03
Я также использовал функцию noConflict, но использовал $ в качестве переменной, поэтому мне не пришлось проходить через мой код и изменять его. var $ = jQuery.noConflict ();

порядке. Мой пример - работа с owl.carousel.

Я получил ту же ошибку при импорте jquery после owl.carousel:

<script src="owl.carousel.js"></script>
<script src="jquery-3.1.1.min.js"></script>

и исправил это, импортировав jquery перед owl.carousel:

<script src="jquery-3.1.1.min.js"></script>
<script src="owl.carousel.js"></script>

Ha ha ha Funny it's a simple mistake for me

я получилasync на моемjquery библиотечный звонок. Просто удалите это, и я получил решение.

<script async src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

TO

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

Why it did this kind of behave: Я получил документацию по W3schoolsССЫЛКА НА САЙТ

Definition and Usage async

Атрибут async является логическим атрибутом.

Когда он присутствует, он указывает, что скрипт будет выполняться асинхронно, как только он станет доступен.

Note: Атрибут async предназначен только для внешних скриптов (и должен использоваться только при наличии атрибута src).

Note: Существует несколько способов выполнения внешнего скрипта:

1. If async is present: Сценарий выполняется асинхронно с остальной частью страницы (сценарий будет выполняться, пока страница продолжает анализ)

2. If async is not present and defer is present: Сценарий выполняется после завершения анализа страницы.

3. If neither async or defer is present: Сценарий извлекается и выполняется немедленно, прежде чем браузер продолжит синтаксический анализ страницы.

Не удалось прочитать свойство» fn & apos; из неопределенного & quot; с:

$.fn.circleType = function(options) {

CODE...

};

Но исправили это, обернув его в функцию готовности документа:

jQuery(document).ready.circleType = function(options) {

CODE...

};

Cannot read property 'fn' of undefinedПроблема может быть в том, что вы загружаете библиотеки вwrong order.

Например:

Вы должны загрузитьbootstrap.js сначала, а затем загрузитьbootstrap.js библиотеки.

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/js/bootstrap-dialog.min.js"></script>

jquery CDN как первый

(например)

<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
Решение Вопроса

(function ( $ ) { 

    // put all that "wl_alert" code here   

}( jQuery ));

Итак$ переменная явно повреждена, ноjQuery переменная должна по-прежнему ссылаться на объект jQuery. (При нормальных обстоятельствах оба$ а такжеjQuery переменные ссылаются на (тот же) объект jQuery.)

Вместо того, чтобы заменить$ имя сjQuery имя во всем коде, вы можете просто использоватьIIFE псевдоним имени вручную. Итак, внешняя переменнаяjQuery связан с$ переменная внутри функции.

Вот простой пример, который поможет вам понять эту концепцию:

var foo = 'Peter';

(function ( bar ) {

    bar // evaluates to 'Peter'

}( foo ));
 06 янв. 2019 г., 06:27
Никаких публичных соло и лингвистических рассуждений. -1
 30 мая 2012 г., 14:44
@Manishearth Готово:)
 30 мая 2012 г., 13:40
Пожалуйста, не размещайте одну строку кода. Объясни это. -1
 30 мая 2012 г., 15:51
@imeVidas: Хорошо, +1 (технически +2: P).

это поможет кому-то на земле. В моем случае jQuery и $ были доступны, но не тогда, когда плагин загружался, поэтому я все обернул в setTimeout. Обертывание внутри setTimeout помогло мне исправить ошибку:

setTimeout(() => {
    /** Your code goes here */

    !function(t, e) {

    }(window);

})

<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
 01 мар. 2018 г., 00:34
Отлично, этот ответ поможет мне.
 23 янв. 2019 г., 19:48
Это избавило от ошибки. Благодарю.
 24 окт. 2018 г., 13:10
Имеет ли значение, когда включен popper.js?
 25 сент. 2018 г., 17:10
Спасибо вам большое! Это сработало отлично.

такой порядок помог мне решить проблему

  <script src="./assets/js/jquery-3.3.1.min.js"></script>
  <script src="./assets/js/jquery-3.3.1.slim.min.js"></script>
  <script src="./assets/js/popper.min.js"></script>
  <script src="./assets/js/bootstrap.min.js"></script>

I fixed it by added the jquery.slim.min.js after the jquery.min.js, as the Solution Sequence.

Problem Sequence

<script src="./vendor/jquery/jquery.min.js"></script>
<script src="./vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

Solution Sequence

<script src="./vendor/jquery/jquery.min.js"></script>
<script src="./vendor/jquery/jquery.slim.min.js"></script>
<script src="./vendor/jquery-easing/jquery.easing.min.js"></script>
 29 янв. 2019 г., 19:30
Спасибо!! оно работает.
 20 дек. 2018 г., 03:15
если я правильно понимаю,slim это подмножество полной библиотеки. в основном, вы просто включили полную библиотеку, а затемslim версия сразу после.

и я загрузил jquery в заголовок вместо загрузки его в конце тела, и это сработало.

requirejs) реализовано, и вы не завернули какую-то библиотеку, которую используете внутри

define(['jquery'], function( jQuery ) { ... lib function ... });

ПРИМЕЧАНИЕ: вам не нужно делать это, если эта библиотека имеет поддержку AMD. Вы можете быстро проверить это, открыв эту библиотеку и просто нажав Ctrl + F & quot; amd & quot; :)

Ваш ответ на вопрос