jQuery Uncaught TypeError: свойство ' $ ' объекта [окно объекта] не является функцией
все, Я загрузил предварительно связанное приложение формы JS/CSS, и я пытаюсь использовать его в Wordpress. У меня есть следующий код:
$(document).ready(function () {
/*----------------------------------------------------------------------*/
/* Parse the data from an data-attribute of DOM Elements
/*----------------------------------------------------------------------*/
$.parseData = function (data, returnArray) {
if (/^[(.*)]$/.test(data)) { //array
data = data.substr(1, data.length - 2).split(',');
}
if (returnArray && !$.isArray(data) && data != null) {
data = Array(data);
}
return data;
};
/*----------------------------------------------------------------------*/
/* Image Preloader
/* http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript
/*----------------------------------------------------------------------*/
// Arguments are image paths relative to the current page.
$.preload = function() {
var cache = [],
args_len = arguments.length;
for (var i = args_len; i--;) {
var cacheImage = document.createElement('img');
cacheImage.src = arguments[i];
cache.push(cacheImage);
}
};
/*----------------------------------------------------------------------*/
/* fadeInSlide by revaxarts.com
/* Fades out a box and slide it up before it will get removed
/*----------------------------------------------------------------------*/
$.fn.fadeInSlide = function (speed, callback) {
if ($.isFunction(speed)) callback = speed;
if (!speed) speed = 200;
if (!callback) callback = function () {};
this.each(function () {
var $this = $(this);
$this.fadeTo(speed / 2, 1).slideDown(speed / 2, function () {
callback();
});
});
return this;
};
/*----------------------------------------------------------------------*/
/* fadeOutSlide by revaxarts.com
/* Fades out a box and slide it up before it will get removed
/*----------------------------------------------------------------------*/
$.fn.fadeOutSlide = function (speed, callback) {
if ($.isFunction(speed)) callback = speed;
if (!speed) speed = 200;
if (!callback) callback = function () {};
this.each(function () {
var $this = $(this);
$this.fadeTo(speed / 2, 0).slideUp(speed / 2, function () {
$this.remove();
callback();
});
});
return this;
};
/*----------------------------------------------------------------------*/
/* textFadeOut by revaxarts.com
/* Fades out a box and slide it up before it will get removed
/*----------------------------------------------------------------------*/
$.fn.textFadeOut = function (text, delay, callback) {
if (!text) return false;
if ($.isFunction(delay)) callback = delay;
if (!delay) delay = 2000;
if (!callback) callback = function () {};
this.each(function () {
var $this = $(this);
$this.stop().text(text).show().delay(delay).fadeOut(1000,function(){
$this.text('').show();
callback();
})
});
return this;
};
/*----------------------------------------------------------------------*/
/* leadingZero by revaxarts.com
/* adds a leding zero if necessary
/*----------------------------------------------------------------------*/
$.leadingZero = function (value) {
value = parseInt(value, 10);
if(!isNaN(value)) {
(value < 10) ? value = '0' + value : value;
}
return value;
};
});
Я предполагал, что Wordpress без конфликта не вызывает проблемы, поэтому я обновил самую последнюю скобку, чтобы выглядеть следующим образом:
}, "jQuery");
однако, я все еще получаю ту же ошибку. Кто-нибудь знает, что будет касаться этой проблемы и как ее решить?
спасибо заранее!
5 ответов:
это проблема синтаксиса, библиотека jQuery, включенная в WordPress, загружается в режиме "без конфликта". Это делается для предотвращения проблем совместимости с другими библиотеками javascript, которые WordPress может загрузить. В режиме "no-confict" ярлык $ недоступен и используется более длинный jQuery, т. е.
jQuery(document).ready(function ($) {
включив $ в скобках после вызова функции, вы можете использовать этот ярлык в блоке кода.
для получения более подробной информации см. WordPress Кодекс
мой любимый нет-конфликт-содружественная конструкция:
jQuery(function($) { // ... });
вызов jQuery с помощью указателя функции является ярлыком для $(document).готовый.(..)
или как мы говорим в coffeescript:
jQuery ($) -> # code here
вы можете рассмотреть возможность замены сценария WordPress jQuery по умолчанию с библиотекой Google, добавив что-то вроде следующего в функции темы.файл php:
function modify_jquery() { if (!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, '1.10.2'); wp_enqueue_script('jquery'); } } add_action('init', 'modify_jquery');
код взят отсюда: http://www.wpbeginner.com/wp-themes/replace-default-wordpress-jquery-script-with-google-library/