jQuery не может вызывать плагины после добавления данных Ajax? - PullRequest
2 голосов
/ 08 марта 2011

РЕДАКТИРОВАТЬ 2: Неважно, все заработало.jQuery был снова включен в один из скриптов, вызываемых с помощью ajax.В любом случае, спасибо.

РЕДАКТИРОВАТЬ: Это перефразированный вопрос.Мне потребовалось некоторое время, чтобы выяснить, в чем проблема.
Вызовы функций плагина (включая эффект пользовательского интерфейса) не работают после того, как я загружаю контент с помощью ajax.

В исходном вопросе был .effect("pulsate",{},1000) звонок, который объясняет ответ сарказикса.Теперь я пытаюсь сделать то же самое с плагином обратного отсчета.Появляется та же проблема.

Вот мой код.Не обращайте внимания на то, что это не имеет особого смысла, оно урезано из файла большего размера.Сам по себе код в порядке.Например, если я звоню fadeOut(), это работает, но если я использую .countdown или .effect, возникает упомянутая проблема.

var getOrderDetails= function(id){
    var that = this;
    $.ajax({
        type: "GET",
        url: "orderDetails.php",
        data: {id: id}, 
        success: function(data){
            //$("#orderDetails").html(data);
            $("#orderDetails").unbind().click(function(){
                var status = $("#orderDetails .orderStatus").text()
                acceptOrder(id, status);
            });
        }
    });
}

var acceptOrder = function(id, status){         
    var that = this;
    $.ajax({
        type: "GET",
        url: "orderStatus.php",
        data: {action: 'set', id: id, status: status}, 
        success: function(data){
            var nowTime = new Date();
            var countdownTime = nowTime.setMinutes(nowTime.getMinutes() + 2);
            $("#waitingOrders").countdown({until: countdownTime, compact:true, format: 'MS'});
        }
    });
}

$(document).ready(function(){
    $(".order").unbind().click(function() {
        var id = $(this).find(".orderId").text();
        getOrderDetails(id);
    });
});

Когда я комментирую строку $("#orderDetails").html(data) (как в коде)таймер обратного отсчета появляется внутри orderDetails div.
Когда я раскомментирую строку, я получаю ошибку countdown is not a function.Посмотрел на дом в firebug, и действительно в первом случае я вижу, что селектор имеет функцию .countdown, а во втором сценарии ее нет.

Что мне здесь не хватает?
Кто-то, пожалуйстапомогите, я застрял на этом в течение нескольких дней.
Пытался обернуть функции успеха ajax другой функцией и передать ее this в качестве контекста, но это не помогает.То же самое

1 Ответ

0 голосов
/ 08 марта 2011

Похоже, вам не хватает некоторых основных функций из jquery-ui.Вы можете загрузить пользовательскую библиотеку jquery-ui с сайта jQuery .

. Вы в основном хотите выбрать Effects core и любой другой эффект, который хотите использовать на сайте.effects core по какой-то причине не является частью библиотеки jQuery ui по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...