Как применить плагин raty к новым сгенерированным div?


У меня есть страница с raty div. С классическим кодом $('.raty').raty({...}); плагин отлично работает с этими существующими элементами div. Но когда я загружаю новые raty div благодаря функции ajax, новые div «не превращаются в звезды». Не могли бы вы помочь мне найти мою ошибку?

$.ajax({
    url: '/ws/player/reviews/p/1',
    context: document.body,
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    jsonp: "callback",
    jsonpCallback: "jsonpCallbackfunction",
    success: function(data) {
        $.each(data.response.reviews, function( key, value ) {
            html = '';
            html += '<div class="raty read" data-rating="5"></div>';
            $('#reviews').append(html);
        });

    }
    data: {player_id: player_id, from: $('#reviews').data('from')}
}).done(function() {
    $(this).find('.raty').raty({
        path: '/img/raty/',
        readOnly: true,
        score: function() {return $(this).data('rating');}
    });
});

Хотя, если я попробую $(this).find('.raty').html('blablabla');, "blablabla" будет правильно написано во всех моих разделах '.raty'.

Спасибо за помощь,

Джереми


person Jeremy    schedule 27.02.2013    source источник
comment
Вам нужно будет инициализировать плагин raty для динамически загружаемых div в успешном обратном вызове функции ajax - либо внутри, либо после вызова $.each.   -  person mccannf    schedule 27.02.2013
comment
это то, что я думал, что делал после вызова ajax. В этом ajax-вызове, как уже упоминалось, если я заменю .raty( на .html(, он работает хорошо. Поэтому я не знаю, как повторно инициализировать плагин raty? (Я также попробовал код в каждой функции, но он не тоже не работает.Более того, я очень хочу написать ('.raty') один раз, а не '#raty098098' для каждого div)   -  person Jeremy    schedule 27.02.2013
comment
Вы уверены, что ваш обратный вызов успеха вызывается? Попробуйте удалить параметры jsonp: и jsonpCallback: и просто добавьте ?callback=? в конец URL-адреса, чтобы проверить, работает ли это. Кстати, это работает на скрипке: jsfiddle.net/mccannf/Z75xQ/7   -  person mccannf    schedule 28.02.2013
comment
Вы когда-нибудь находили решение для этого?   -  person Zabs    schedule 21.10.2013
comment
Это может вам помочь. плагин jraty jquery, похоже, не работает с ajax json"> stackoverflow.com/questions/19495461/   -  person Zabs    schedule 21.10.2013


Ответы (1)


ты сделал небольшую ошибку

увидеть этот код

$.ajax({
url: '/ws/player/reviews/p/1',
context: document.body,
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "jsonpCallbackfunction",
success: function(data) {
    $.each(data.response.reviews, function( key, value ) {
        html = '';
        html += '<div class="raty read" data-rating="5"></div>';
        $('#reviews').append(html);
    });
}
data: {player_id: player_id, from: $('#reviews').data('from')}}).done(function() {
$(this).find('#reviews .raty').raty({ // Changes
    path: '/img/raty/',
    readOnly: true,
    score: function() {return $(this).data('rating');}
});});

Надеюсь, этот код будет работать

person Vikram    schedule 25.04.2014