Проблема с JQuery / Javascript в нижнем колонтитуле Wordpress [дубликат]

select t3.name, sum(t3.prod_A) as Prod_A, sum(t3.prod_B) as Prod_B, sum(t3.prod_C) as    Prod_C, sum(t3.prod_D) as Prod_D, sum(t3.prod_E) as Prod_E  
from
(select t2.name as name, 
case when t2.prodid = 1 then t2.counts
else 0 end  prod_A, 

case when t2.prodid = 2 then t2.counts
else 0 end prod_B,

case when t2.prodid = 3 then t2.counts
else 0 end prod_C,

case when t2.prodid = 4 then t2.counts
else 0 end prod_D, 

case when t2.prodid = "5" then t2.counts
else 0 end prod_E

from 
(SELECT partners.name as name, sales.products_id as prodid, count(products.name) as counts
FROM test.sales left outer join test.partners on sales.partners_id = partners.id
left outer join test.products on sales.products_id = products.id 
where sales.partners_id = partners.id and sales.products_id = products.id group by partners.name, prodid) t2) t3

group by t3.name ;
161
задан Craig London 7 April 2015 в 14:34
поделиться

15 ответов

По умолчанию, когда вы вставляете jQuery в Wordpress, вы должны использовать jQuery, а $ не используется (это для совместимости с другими библиотеками).

Ваше решение обернуть его в function будет работать нормально, или вы можете загрузить jQuery другим способом (но это, вероятно, не очень хорошая идея в Wordpress).

Если вы должны использовать document.ready, вы можете фактически передать $ в функцию call:

jQuery(function ($) { ...
247
ответ дан Explosion Pills 21 August 2018 в 04:32
поделиться

замените знак $ на jQuery следующим образом:

jQuery(function(){
//your code here
});
1
ответ дан Abdelsalam Shahlol 21 August 2018 в 04:32
поделиться

Вы можете избежать конфликтов, подобных этому

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  alert("Hi this will not conflict now");
  jq('selector').show();
});
16
ответ дан Ashwani Panwar 21 August 2018 в 04:32
поделиться

Дважды проверьте ссылки на jQuery. Возможно, вы ссылаетесь на него более одного раза или вы слишком рано вызываете свою функцию (до определения jQuery). Вы можете попробовать, как указано в моих комментариях, и поместить любую ссылку jQuery в верхнюю часть вашего файла (в голове) и посмотреть, поможет ли это.

Если вы используете инкапсуляцию jQuery, она не должна Это дело. Пожалуйста, попробуйте, потому что я думаю, что это красивее и более очевидно, но если jQuery не определен, вы получите те же ошибки.

В конце ... jQuery в настоящее время не определен.

5
ответ дан Cayce K 21 August 2018 в 04:32
поделиться
  • 1
    Я думаю, что это скорее чем-то пытается получить доступ к JQuery, прежде чем он будет определен, что, в свою очередь, сломает все. Попробуйте переместить свой script, который ссылается на JQuery на вершину вашего index.html, и он, вероятно, будет работать – Dan Moldovan 18 May 2015 в 20:36
  • 2
    Этот ответ требует большей наглядности. Да, остальные действительны, если стандартное пространство имен взято с версией jQuery, загруженной через какой-либо другой плагин. Но проверьте, что вы не случайно (и, возможно, неоправданно) загружаете jQuery более одного раза. – edkay 13 January 2017 в 20:57
var $=jQuery.noConflict();

$(document).ready(function(){
    // jQuery code is in here
});

Отдать должное Ashwani Panwar и Cyssoo ответ: https://stackoverflow.com/a/29341144/3010027

10
ответ дан Community 21 August 2018 в 04:32
поделиться

Вы должны передать $ in function ()

<script>
jQuery(document).ready(function($){

// jQuery code is in here

});
</script>
8
ответ дан Jitendra Damor 21 August 2018 в 04:32
поделиться
  • 1
    Как это отличается от приведенного выше ответа (с трех лет до этого)? – rnevius 3 February 2016 в 05:27

Попробуйте следующее:

<script language="JavaScript" type="text/javascript" src="jquery/jquery.js"></script>
<script>
    jQuery.noConflict();
    (function ($) {
        function readyFn() {
            // Set your code here!!
        }

        $(document).ready(readyFn); 
    })(jQuery);

</script>
12
ответ дан Jose Carlos Ramos Carmenates 21 August 2018 в 04:32
поделиться

Вы сталкиваетесь с этой проблемой, когда имя вашей функции и одно из имен имен в файле одинаково. просто убедитесь, что все ваши имена имен в файле уникальны.

2
ответ дан Laxman Jaygonde 21 August 2018 в 04:32
поделиться

Это должно исправить:

jQuery(document).ready(function($){
  //you can now use $ as your jQuery object.
  var body = $( 'body' );
});

Проще говоря, WordPress запускает свои собственные скрипты, прежде чем вы сможете, и они освободят $ var, чтобы он не сталкивался с другими библиотеками. Это делает общий смысл, поскольку WordPress используется для всех видов веб-сайтов, приложений и, конечно, блогов.

Из их документации:

Библиотека jQuery, включенная в WordPress установлен в режим noConflict () (см. Wp-includes / js / jquery / jquery.js). Это необходимо для предотвращения проблем совместимости с другими библиотеками JavaScript, которые может связывать WordPress.

В режиме noConflict () глобальный $ shortcut для jQuery недоступен ...

122
ответ дан Matthew Blancarte 21 August 2018 в 04:32
поделиться
<script>
var jq=jQuery.noConflict();
(function ($) 
    {
    function nameoffunction()
    {
        // Set your code here!!
    }

    $(document).ready(readyFn); 
    })(jQuery);

теперь использовать jq вместо jQuery

2
ответ дан Panther 21 August 2018 в 04:32
поделиться

Что сработало для меня. Первая библиотека для импорта - это библиотека запросов, а затем вызов метода jQuery.noConflict ().

<head>
 <script type="text/javascript" src="jquery.min.js"/>
 <script>
  var jq = jQuery.noConflict();
  jq(document).ready(function(){
  //.... your code here
    });
 </script>
3
ответ дан PbxMan 21 August 2018 в 04:32
поделиться

Кроме того, я нашел хорошее решение для использования режима jQuery noConflict.

(function($){

  $(document).ready(function(){
      // write code here
  });

  // or also you can write jquery code like this

  jQuery(document).ready(function(){
      // write code here
  });

})(jQuery);

Я нашел это решение здесь. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/

1
ответ дан Renish Khunt 21 August 2018 в 04:32
поделиться

Используйте

jQuery(document).

вместо

$(document).

или

Внутри функции $ указывает на jQuery, как вы ожидали бы

(function ($) {
   $(document).
}(jQuery));
2
ответ дан Sanjay 21 August 2018 в 04:32
поделиться
(function( $ ) {
  "use strict";

  $(function() {

    //Your code here

  });

}(jQuery));
3
ответ дан Sharif Mohammad Eunus 21 August 2018 в 04:32
поделиться

Это решение сработало для меня

;(function($){
    // your code
})(jQuery);

Перенесите свой код внутри замыкания и используйте $ вместо jQuery

Я нашел указанное решение в https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma

... после поиска слишком много

16
ответ дан Zanna 21 August 2018 в 04:32
поделиться
  • 1
    Фантастическое решение. Основная причина этого заключается в том, что ";" закрывает любой другой экземпляр jquery, который уже активен, и в то же время он объявляет другое новое локально. Когда у вас есть всего несколько секунд, чтобы реализовать макет в процессе производства или множество запущенных плагинов WordPress, это может сделать это отлично. Но имейте в виду, что вы должны исправить эту проблему, это всего лишь бандажная помощь, но если это информационная страница, все в порядке. – Luis 12 December 2015 в 01:53
  • 2
    @ Марта Джеймс Это работает для меня, поэтому включил его. Он может работать или не работать для других – Bikram Shrestha 29 April 2016 в 05:52
Другие вопросы по тегам:

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