JQuery "$ (...). effect не является функцией"

Я уже просматривал форум, но не могу найти какой-либо способ исправить проблему, связанную с функцией "эффект" в jQuery.

Я получаю точно код ошибки TypeError: $(...).effect is not a function в коде:

$('div.step').removeClass('active');
$("div.step").effect('slide', {direction: 'right', mode: 'hide'}, 500);
$('#step' + step + '').addClass('active');
$('#step' + step + '').effect('slide', {direction: 'right', mode: 'show'}, 500);

Я включил как jQuery, так и jQuery UI, как это в <head></head>:

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

Но тщетно, есть ли у вас какие-либо идеи? Спасибо вам

Ответ 1

Вам нужно разместить свой пользовательский script после объявлений jQuery и jQuery UI и перенести его в документ ready():

<body>
    ...
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            ...
        });
    </script>
</body>

Ответ 2

Я не знаю, была ли проблема решена, но я нашел способ реплицировать функцию дрожания с помощью функции анимации, и она работает как прелесть:

function shake() {
        var div = document.getElementById('yourElementID');
        var interval = 100;
        var distance = 10;
        var times = 4;

        $(div).css('position', 'relative');

        for (var iter = 0; iter < (times + 1) ; iter++) {
            $(div).animate({
                left: ((iter % 2 == 0 ? distance : distance * -1))
            }, interval);
        }                                                                                                          
        $(div).animate({ left: 0 }, interval);
    }

Ответ 3

Попробуйте использовать

$(document).ready(function () {
    $('div.step').removeClass('active');
    $("div.step").effect('slide', {direction: 'right', mode: 'hide'}, 500);
    $('#step' + step + '').addClass('active');
    $('#step' + step + '').effect('slide', {direction: 'right', mode: 'show'}, 500);
}

Ответ 4

Для меня оказалось, что в моем проекте использовалась версия пользовательской загрузки JQuery-UI, которая была настроена на исключение плагина effects. Замена моей версии JQuery UI с полной версией исправила мою проблему.

Ответ 5

Добавьте jQueryUI, а не просто jQuery. jQuery не содержит функцию effect(): https://code.jquery.com/ui