Jquery ошибка is not a function

I have the jQuery loaded fine, I’ve quadruple-checked, though I’m getting this error in FireBug «$ is not a function» and my code doesn’t work.

Here’s my code:

<script type="text/javascript">
    $("ol li:nth-child(1)").addClass('olli1');
    $("ol li:nth-child(2)").addClass("olli2");
    $("ol li:nth-child(3)").addClass("olli3");
    $("ol li:nth-child(4)").addClass("olli4");
    $("ol li:nth-child(5)").addClass("olli5");
    $("ol li:nth-child(6)").addClass("olli6");
    $("ol li:nth-child(7)").addClass("olli7");
    $("ol li:nth-child(8)").addClass("olli8");
    $("ol li:nth-child(9)").addClass("olli9");
    $("ol li:nth-child(10)").addClass("olli10");
    $("ol li:nth-child(11)").addClass("olli11");
    $("ol li:nth-child(12)").addClass("olli12");
    $("ol li:nth-child(13)").addClass("olli13");
    $("ol li:nth-child(14)").addClass("olli14");
    $("ol li:nth-child(15)").addClass("olli15");
    $("ol li:nth-child(16)").addClass("olli16");
    $("ol li:nth-child(17)").addClass("olli17");
    $("ol li:nth-child(18)").addClass("olli18");
    $("ol li:nth-child(19)").addClass("olli19");
    $("ol li:nth-child(20)").addClass("olli20"); 
</script>

Darko's user avatar

Darko

38.2k15 gold badges79 silver badges106 bronze badges

asked Oct 14, 2010 at 8:51

Alex's user avatar

12

In WordPress jQuery.noConflict() is called on the jQuery file it includes (scroll to the bottom of the file it’s including for jQuery to see this), which means $ doesn’t work, but jQuery does, so your code should look like this:

<script type="text/javascript">
  jQuery(function($) {
    for(var i=0; i <= 20; i++) 
      $("ol li:nth-child(" + i + ")").addClass('olli' + i);
  });
</script>

answered Oct 14, 2010 at 9:09

Nick Craver's user avatar

Nick CraverNick Craver

622k136 gold badges1295 silver badges1155 bronze badges

6

It’s really hard to tell, but one of the 9001 ads on the page may be clobbering the $ object.

jQuery provides the global jQuery object (which is present on your page). You can do the following to «get» $ back:

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

If you think you’re having jQuery problems, please use the debug (non-production) versions of the library.

Also, it’s probably not best to be editing a live site like that …

answered Oct 14, 2010 at 9:09

strager's user avatar

stragerstrager

88.6k26 gold badges134 silver badges176 bronze badges

1

<script type="text/javascript">
    $("ol li:nth-child(1)").addClass('olli1');
    $("ol li:nth-child(2)").addClass("olli2");
    $("ol li:nth-child(3)").addClass("olli3");
    $("ol li:nth-child(4)").addClass("olli4");
    $("ol li:nth-child(5)").addClass("olli5");
    $("ol li:nth-child(6)").addClass("olli6");
    $("ol li:nth-child(7)").addClass("olli7");
    $("ol li:nth-child(8)").addClass("olli8");
    $("ol li:nth-child(9)").addClass("olli9");
    $("ol li:nth-child(10)").addClass("olli10");
    $("ol li:nth-child(11)").addClass("olli11");
    $("ol li:nth-child(12)").addClass("olli12");
    $("ol li:nth-child(13)").addClass("olli13");
    $("ol li:nth-child(14)").addClass("olli14");
    $("ol li:nth-child(15)").addClass("olli15");
    $("ol li:nth-child(16)").addClass("olli16");
    $("ol li:nth-child(17)").addClass("olli17");
    $("ol li:nth-child(18)").addClass("olli18");
    $("ol li:nth-child(19)").addClass("olli19");
    $("ol li:nth-child(20)").addClass("olli20"); 
</script>

change this to

    <script type="text/javascript">
        jQuery(document).ready(function ($) {
        $("ol li:nth-child(1)").addClass('olli1');
        $("ol li:nth-child(2)").addClass("olli2");
        $("ol li:nth-child(3)").addClass("olli3");
        $("ol li:nth-child(4)").addClass("olli4");
        $("ol li:nth-child(5)").addClass("olli5");
        $("ol li:nth-child(6)").addClass("olli6");
        $("ol li:nth-child(7)").addClass("olli7");
        $("ol li:nth-child(8)").addClass("olli8");
        $("ol li:nth-child(9)").addClass("olli9");
        $("ol li:nth-child(10)").addClass("olli10");
        $("ol li:nth-child(11)").addClass("olli11");
        $("ol li:nth-child(12)").addClass("olli12");
        $("ol li:nth-child(13)").addClass("olli13");
        $("ol li:nth-child(14)").addClass("olli14");
        $("ol li:nth-child(15)").addClass("olli15");
        $("ol li:nth-child(16)").addClass("olli16");
        $("ol li:nth-child(17)").addClass("olli17");
        $("ol li:nth-child(18)").addClass("olli18");
        $("ol li:nth-child(19)").addClass("olli19");
        $("ol li:nth-child(20)").addClass("olli20"); 
     });
    </script>

answered Jul 18, 2017 at 6:08

Roshan Padole's user avatar

In my case I was using jquery on my typescript file:

import * as $ from "jquery";

But this line gives me back an Object $ and it does not allow to use as a function (I can not use $('my-selector')). It solves my problem this lines, I hope it could help anyone else:

import * as JQuery from "jquery";
const $ = JQuery.default;

answered Mar 13, 2018 at 16:00

Luillyfe's user avatar

LuillyfeLuillyfe

6,0138 gold badges35 silver badges46 bronze badges

1

There are quite lots of answer based on situation.

1) Try to replace ‘$’ with «jQuery»

2) Check that code you are executed are always below the main jquery script.

<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){

});
</script>

3) Pass $ into the function and add «jQuery» as a main function like below.

<script type="text/javascript">
jQuery(document).ready(function($){

});
</script>

answered Feb 14, 2019 at 13:42

Mayank Dudakiya's user avatar

As RPM1984 refers to, this is mostly likely caused by the fact that your script is loading before jQuery is loaded.

answered Oct 14, 2010 at 8:53

mkoistinen's user avatar

mkoistinenmkoistinen

7,6943 gold badges41 silver badges56 bronze badges

1

That error kicks in when you have forgot to include the jQuery library in your page or there is conflict between libraries — for example you be using any other javascript library on your page.

Take a look at this for more info:

  • Using jQuery with other libraries

answered Oct 14, 2010 at 8:58

Sarfraz's user avatar

SarfrazSarfraz

376k77 gold badges531 silver badges578 bronze badges

When jQuery is not present you get $ is undefined and not your message.

Did you check if you don’t have a variable called $ somewhere before your code?
Inspect the value of $ in firebug to see what it is.

Slightly out of the question, but I can’t resist to write a shorter code to your class assignment:

    var i = 1;
    $("ol li").each(function(){
        $(this).addClass('olli' + i++);
    });

answered Oct 14, 2010 at 9:04

Mic's user avatar

MicMic

24.7k9 gold badges57 silver badges69 bronze badges

Use jQuery for $. I tried and work.

answered Jul 31, 2018 at 5:09

Diego Santa Cruz Mendezú's user avatar

I believe using $ alone is now deprecated in the new version of jQuery. Use below syntax instead:

jQuery(function($) {
//magic here
})

answered Jun 18, 2021 at 0:26

Rosalito Udtohan's user avatar

There are two possible reasons for that error:

  1. your jquery script file referencing is not valid
  2. try to put your jquery code in document.ready, like this:

    $(document).ready(function(){

    ….your code….

    });

cheers

answered Oct 14, 2010 at 8:58

Marko's user avatar

MarkoMarko

1,8741 gold badge21 silver badges36 bronze badges

2

Here is my code:

(function($){
    $.fn.pluginbutton = function (options) {
        myoptions = $.extend({ left: true });
        return this.each(function () {
            var focus = false;
            if (focus === false) {
                this.hover(function () {
                    this.animate({ backgroundPosition: "0 -30px" }, { duration: 0 });
                    this.removeClass('VBfocus').addClass('VBHover');
                }, function () {
                    this.animate({ backgroundPosition: "0 0" }, { duration: 0 });
                    this.removeClass('VBfocus').removeClass('VBHover');
                });
            }
            this.mousedown(function () {
                focus = true
                this.animate({ backgroundPosition: "0 30px" }, { duration: 0 });
                this.addClass('VBfocus').removeClass('VBHover');
            }, function () {
                focus = false;
                this.animate({ backgroundPosition: "0 0" }, { duration: 0 });
                this.removeClass('VBfocus').addClass('VBHover');
            });
        });
    }
});


$(document).ready(function () {
    $('.smallTabsHeader a').pluginbutton();
});

It gives me an error. What’s wrong?

Toby Speight's user avatar

Toby Speight

26.6k47 gold badges66 silver badges99 bronze badges

asked May 24, 2011 at 11:42

Phil Jackson's user avatar

Phil JacksonPhil Jackson

10.2k23 gold badges96 silver badges129 bronze badges

1

This problem is «best» solved by using an anonymous function to pass-in the jQuery object thusly:

The Anonymous Function Looks Like:

<script type="text/javascript">
    (function($) {
        // You pass-in jQuery and then alias it with the $-sign
        // So your internal code doesn't change
    })(jQuery);
</script>

This is JavaScript’s method of implementing (poor man’s) ‘Dependency Injection’ when used alongside things like the ‘Module Pattern’.

So Your Code Would Look Like:
Of course, you might want to make some changes to your internal code now, but you get the idea.

<script type="text/javascript">
    (function($) {
        $.fn.pluginbutton = function(options) {
            myoptions = $.extend({ left: true });
            return this.each(function() {
                var focus = false;
                if (focus === false) {
                    this.hover(function() {
                        this.animate({ backgroundPosition: "0 -30px" }, { duration: 0 });
                        this.removeClass('VBfocus').addClass('VBHover');
                    }, function() {
                        this.animate({ backgroundPosition: "0 0" }, { duration: 0 });
                        this.removeClass('VBfocus').removeClass('VBHover');
                    });
                }
                this.mousedown(function() {
                    focus = true
                    this.animate({ backgroundPosition: "0 30px" }, { duration: 0 });
                    this.addClass('VBfocus').removeClass('VBHover');
                }, function() {
                    focus = false;
                    this.animate({ backgroundPosition: "0 0" }, { duration: 0 });
                    this.removeClass('VBfocus').addClass('VBHover');
                });
            });
        }
    })(jQuery);
</script>

answered May 24, 2011 at 11:54

Prisoner ZERO's user avatar

Prisoner ZEROPrisoner ZERO

13.8k20 gold badges92 silver badges136 bronze badges

0

The problem arises when a different system grabs the $ variable. You have multiple $ variables being used as objects from multiple libraries, resulting in the error.

To solve it, use jQuery.noConflict just before your (function($){:

jQuery.noConflict();
(function($){
$.fn.pluginbutton = function (options) {
...

answered May 24, 2011 at 11:45

Kamyar's user avatar

5

change

});


$(document).ready(function () {
    $('.smallTabsHeader a').pluginbutton();
});

to

})(jQuery); //<-- ADD THIS


$(document).ready(function () {
    $('.smallTabsHeader a').pluginbutton();
});

This is needed because, you need to call the anonymous function that you created with

(function($){

and notice that it expects an argument that it will use internally as $, so you need to pass a reference to the jQuery object.

Additionally, you will need to change all the this. to $(this)., except the first one, in which you do return this.each

In the first one (where you do not need the $()) it is because in the plugin body, this holds a reference to the jQuery object matching your selector, but anywhere deeper than that, this refers to the specific DOM element, so you need to wrap it in $().

Full code at http://jsfiddle.net/gaby/NXESk/

answered May 24, 2011 at 11:52

Gabriele Petrioli's user avatar

Gabriele PetrioliGabriele Petrioli

190k34 gold badges259 silver badges316 bronze badges

0

It works on my case:

import * as JQuery from "jquery";
const $ = JQuery.default;

answered Mar 13, 2018 at 15:53

Luillyfe's user avatar

LuillyfeLuillyfe

6,0138 gold badges35 silver badges46 bronze badges

1

When converting an ASP.Net webform prototype to a MVC site I got these errors:

TypeError: $(…).accordion is not a function
$(«#accordion»).accordion(


$(‘#dialog’).dialog({
TypeError: $(…).dialog is not a function

It worked fine in the webforms. The problem/solution was this line in the _Layout.cshtml

@Scripts.Render("~/bundles/jquery")

Comment it out to see if the errors go away. Then fix it in the BundlesConfig:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));

Gaurav Aggarwal's user avatar

answered Jan 21, 2016 at 23:39

Jeremy Thompson's user avatar

Jeremy ThompsonJeremy Thompson

61.1k33 gold badges186 silver badges318 bronze badges

0

I solved it by renaming my function.

Changed

function editForm(value)

to

function editTheForm(value)

Works perfectly.

answered Jul 18, 2013 at 21:07

rmooney's user avatar

rmooneyrmooney

6,0933 gold badges28 silver badges28 bronze badges

2

In my case, the same error had a much easier fix. Basically my function was in a .js file that was not included in the current aspx that was showing. All I needed was the include line.

answered Jul 18, 2017 at 7:49

Ash's user avatar

AshAsh

1,2593 gold badges25 silver badges48 bronze badges

WordPress fully supports JavaScript as well as the jQuery library. However, the way in which WordPress implements jQuery can lead to errors when you’re trying to execute functions. One of the most common issues is the “Uncaught TypeError: $ is not a function” error.

Troubleshooting this error is relatively simple if you understand what causes it. The “$” alias is at the core of the problem, and jQuery and WordPress offer several ways to circumvent it so you can run the functions you need.

In this article, we’ll explain what the “Uncaught TypeError: $ is not a function” error is and what causes it. Then, we’ll also show you how to troubleshoot it. Let’s get started!

What Is the “Uncaught TypeError: $ Is Not a Function” Error in WordPress?

The “Uncaught TypeError: $ is not a function” error is a common JavaScript error that occurs when the jQuery library is not loaded correctly or there’s a conflict with other scripts using the ‘$’ symbol.

In WordPress, this error has more to do with how the Content Management System (CMS) implements jQuery and less with loading problems.

jQuery is a popular JavaScript library. It’s widely used in WordPress themes and plugins for handling various dynamic elements, animations, and AJAX operations:

The jQuery library homepage

jQuery library

In jQuery, the “$” symbol is an alias for the jQuery object, which is the primary object you interact with when working with the library. It makes the code shorter, more readable, and easier to write.

While WordPress fully supports the jQuery library, the way in which it’s implemented can lead to errors… so learning how to quickly troubleshoot them is key 🔑Click to Tweet

The “Uncaught TypeError: $ is not a function” is somewhat difficult to troubleshoot because you won’t see a clear error message. Unlike other WordPress errors, this problem can be triggered by misconfigured elements on your site or even a 404 error page:

Screenshot of a 404 “page not found” error

404 “page not found” error

The most effective way to diagnose the problem is by taking a look at the developer console or by using WordPress debug logs.

What Are the Main Causes of the “Uncaught TypeError: $ Is Not a Function” Error?

The “Uncaught TypeError: $ is not a function” error has everything to do with jQuery. You’ll run into this problem when a function that includes the “$” symbol is executed while the website is being loaded.

Here are some potential causes behind the error:

  1. The jQuery library is not properly loaded. If the jQuery library isn’t properly loaded or enqueued, the ‘$’ symbol won’t be recognized as a valid function and it will throw an error. This is typically not a problem in WordPress because the Content Management System (CMS) loads the library natively.
  2. You’re using jQuery in noConflict mode. By default, WordPress runs jQuery in noConflict mode. That means it doesn’t recognize the “$” symbol as a function name. To use it, you’ll need to put a workaround in action.
  3. Plugin or theme conflicts. Some plugins or themes may have improperly coded JavaScript that interferes with the proper functioning of jQuery or uses the ‘$’ symbol in a way that causes problems with other scripts.

To summarize, WordPress is not configured to recognize the “$” symbol. However, that doesn’t mean you can’t run jQuery code within the CMS. After all, the library is part of WordPress. What you’ll need to do is use a workaround to avoid problems with the “$” symbol.

How To Fix the “Uncaught TypeError: $ Is Not a Function” Error (2 Ways)

Before we get to work, it’s important to note that jQuery is already a part of WordPress. Some tutorials will instruct you to enqueue jQuery, but the library has been a part of the Content Management System (CMS) for a while.

WordPress also runs jQuery in “noConflict” mode out of the box. That means it releases the “$” symbol so that other libraries can use it. Instead of disabling “noConflict” mode, here’s how you should approach this problem.

1. Use “jQuery” Instead of “$”

If you run into problems while using the “$” symbol in functions, you can use “jQuery” instead. To give you an example, here’s what a basic jQuery function using “$” may look like:

$(function() {
  // Your code here will run once the DOM is ready
});

In this case, a quick fix would be to replace the “$” symbol with jQuery. The code would then look like this:

jQuery(function() {
  // This code will not trigger the error
});

Alternatively, you can “wrap” the code in an immediately invoked function expression that contains the jQuery symbol. The following example would not trigger the “Uncaught TypeError: $ is not a function” error because it uses the jQuery symbol as a wrapper:

jQuery(function ($) {
    // You can use $ inside the wrapper
    console.log($('.primary-menu'));
});

After making these changes to the code, you can use your browser’s developer console or the WordPress debug log to see if the error persists. If it does, you may need to map “jQuery” to another symbol to circumvent more errors.

2. Use a Custom Alias in jQuery

“$” is the default alias for the jQuery object. However, since WordPress runs jQuery in noConflict mode, you might need to map an alternative alias to avoid conflicts with other libraries.

This process is relatively simple, as you can map the alias to a new symbol with a single line of code:

vvar $j = jQuery;

That code replaces the default alias with “$j” but it can be anything else you want. Some developers prefer this approach versus having to type the full “jQuery” object, as we showed in the previous method.

If you’re not sure where to add this code, you can read our tutorial on how to add code to the header and footer in WordPress. Keep in mind that even if you register a new alias, you’ll still be able to use “jQuery” instead of that symbol.

Once you understand what causes this (deceptively complicated!) looking error, fixing it is simple- learn how in this guide 🛠️Click to Tweet

Summary

WordPress enables you to use jQuery on your website. However, if you want to avoid errors such as “Uncaught TypeError: $ is not a function”, you’ll need to understand how the CMS implements the library. WordPress uses jQuery’s “noConflict” mode, which means it doesn’t recognize the “$” symbol.

The “Uncaught TypeError: $ is not a function” error appears when you try to use a function that calls jQuery using “$”. To circumvent this problem, you can type the full jQuery object instead or map the alias to a different symbol to avoid conflicts.

If you use Kinsta, you can enable WordPress debug mode in the MyKinsta dashboard to diagnose problems. Plus, all of our plans offer top-quality support to help you troubleshoot any issues that you may encounter. Check out our plans!

“Error: $ is not a function”, this is the error that was being thrown back at me while working on a WordPress site the other day. However for the life of me I couldn’t see why my, usual fine JavaScript code, was failing. Was it a problem with my jQuery code, my WordPress installation or both?

I reduced my code down to producing an alert when the DOM was ready, but still it threw the error:

Error: $ is not a function

Well I’m sure we’ve all had this error before, usually when we break or incorrectly reference the jQuery core library. However I doubled checked and it was definitely pointing to the right file.

After a little spree on Google and a bit of research, I found that WordPress loads jQuery in a ‘no-conflicts’ mode to significantly reduce the likelihood of it conflicting with other third party libraries that a owner may install on their blog/site.

What this means in my scenrario, was exactly what the error stated. In ‘no conflict’ mode the $ shortcut is disabled, so you must replace it with the word ‘jQuery’ (notice the capitalised Q).

So if you had a piece of script such as:

[js]$(document).ready(function() {
$(«.someClass»).hide();
$(«#elementID .anotherClass»).eq(2).show();

}[/js]

You’d replace all the dollar symbols with the string ‘jQuery’.

[js]jQuery(document).ready(function() {
jQuery(«.someClass»).hide();
jQuery(«#elementID .anotherClass»).eq(2).show();

}[/js]

So thats one way to circumnavigate the conflict free wrapper that WordPress applies to jQuery.

Another approach, jQuery and conflict modes…

In my situation I was importing some large chunks of jQuery code libraries, so I didn’t really want to duplicate my existing libraries just for the purposes of having one in ‘normal’ mode and one in ‘no-conflicts’ mode.

Then I read you can easily override the ‘no-conflict’ compatibility mode, score! Now normally you shouldn’t just jump in and override such a system, it is there for a reason you know! The WordPress system is built by some very brainy people, much better than myself, so if they think its a requirement for a vanilla install of their system then so be it. However with the project I was working on, I knew exactly what was installed already, and that no further plugins will be scheduled to be installed for a long time. Either way I dropped a few comments in the top of the jQuery source file, as well as a ReadMe file in the jQuery directory, just in case in the future it did become a problem.

Anyway… the solution turned out to be simple passing the dollar shortcut in as a argument for the ready function applied to the document. So our example code becomes:

[js]jQuery(document).ready(function( $ ) {
$(«.someClass»).hide();
$(«#elementID .anotherClass»).eq(2).show();

}[/js]

Notice we still have to use the conflict free wrapper to begin with, but once the page is ready the dollar shortcut will work for your existing code. So no need to go changing those libraries!

Hope that helps someone out, I was nearly tearing my hair out trying to work out why the error “$ is not a function” was being thrown

Currently, WordPress is the best website builder on the internet. It has gained its popularity due to the many features it offers. However, much like everything else, as good as this CMS may be, it comes with a few issues as well.

One of these issues is the $ is not a function WordPress error. This error can cause your website to display the 404 pages.

In this article, we would like to discuss the $ is not a function WordPress error.

What is the $ is not a function of WordPress Error?

$ is not a function WordPress error occurs when the code comes before the jQuery library. For example, if a plugin or theme calls a code before calling the right library, you get this error.

By default, WordPress doesn’t understand $ as jQuery and you have to make some modifications to fix this error. However, this process could be challenging for some users without any programming knowledge.

$ is not a Function WordPress Error

As always, before making any changes to the core files of WordPress, we recommend you get a full backup of your website. This is a must, because if you misplace a simple “;” you could completely ruin the website.

The backup is there to restore your website back to what it was before you made the modifications.

Use $ instead of jQuery in WordPress

One of the easy fixes is to use $ in WordPress instead of jQuery. You will have to enqueue the script in your theme’s functions.php file.

wp_enqueue_script("jquery");

Most WordPress theme and plugin developers are aware of this issue. Thus, they rather use jQuery instead of the $ sign to be safe.

For example, the normal jQuery anywhere should look like this:

$(“#element”).function();

In WordPress the jQuery looks like this:

jQuery(“#element”).function();

Writing jQuery in a script hundreds of times makes it harder to read and increases the size of the script. It’s recommended that you map jQuery to be mapped to $ in the footer of your website. Simply, copy and paste the following code in the footer file of your theme:

(function($) {
	// console.log($);
})( jQuery );

If you would like to add the code to the header of your theme, simply use the following code:

jQuery(document).ready(function( $ ) {
	// console.log($);
});

With this code, you can write a clean script for your website.

Use a New Name for jQuery

There are many changes you can make to the jQuery, one of them is the ability to change the $ to any particular name you have in mind. To use a new name for jQuery, simply use the following code and replace the name element with the name you have in mind.

var j = jQuery.noConflict();
j( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";

Disable noConflict Mode

To turn off the jQuery.noConflict in WordPress, use the following command:

$ = jQuery.noConflict(true);

This code should turn off the noConflict mode completely.

The $.noConflict command gives you the ability to control the $ variable back to whatever library it was first assigned to. This command makes sure that jQuery doesn’t have any confliction with the $ object of other libraries.

Conclusion

In this article, we discussed the $ is not a function WordPress error. This error is usually caused when your code is called before calling the jQuery and if you are using $ instead of jQuery in WordPress.

By default, WordPress uses jQuery instead of the normal method of $ and this could cause your website to display the 404 error.

You can use a function in both header or footer to change the name $ to your desired name. Besides, you can disable the noConflict mode in WordPress. noConflict mode gives you the ability to control the $ variables and revert them to whatever library they were originally assigned to.

This mode prevents the confliction between the $ object of other libraries.

Понравилась статья? Поделить с друзьями:
  • Jeep grand cherokee wj ошибки климата
  • Joomla ошибки при установки шаблона
  • Joomla ошибка подключения к smtp
  • Jeep grand cherokee wj ошибка p0158
  • Joomla ошибка загрузки пакета обновления