2013-04-04 2 views
0

Я пытаюсь использовать красивый плагин под названием jRating, который якобы выполняет какой-то вызов AJAX, когда я нажимаю на звезды. Он делает это с правильным значением скорости, но атрибут data-id, который будет вводить запрос MySQL в AJAX-называемом файле, не определен (NaN). Это код:Чтение атрибута «data-id» с помощью jQuery

Демо HTML:

<div class="exemple"> 
    <!-- in this exemple, 12 is the average and 1 is the id of the line to update in DB --> 
    <div class="basic" data-average="12" data-id="1"></div> 
</div> 

jRating.jquery.js:

//Line 60: 
//idBox = parseInt($(this).attr('data-id')), // old version, idBox=Nan 
idBox = parseInt($(this).data("id")); // my version, still idBox=Nan 

редактировать: JQuery вызова в заголовке главного Php страницы:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $(".exemple").jRating({ 
     length:10, 
     decimalLength:0, 
     onSuccess : function(){ 
     alert('Success : your rate has been saved :)'); 
     }, 
     onError : function(){ 
     alert('Error : please retry'); 
     } 
    }); 
    }); 
</script> 

Я не могу понять, что случилось. Пожалуйста, помогите мне найти его. Спасибо!

РЕШЕНИЕ:

Как было признано @ZachL, $(this), в jRating.jquery.js имел в виду div.exemple, в то время как данные Идентификатор был в div.basic.

So change $(this).data("id") to $(this).find('.basic').data("id") работал.

+1

я себе его проблемы с '$ (это)'. Что вы получаете, когда регистрируете это? –

+0

«Это» указывает на 'div.basic' или' div.exemple' или что-то еще? – biziclop

+0

Я согласен с Заком. '$ (this)', вероятно, не тот элемент, который, по его мнению, есть, потому что '$ (this) .data (" id ")' должен работать. – Steve

ответ

3

Насколько я могу судить, скрипт ищет атрибут данных на <div class="exemple">, но он существует только на <div class="basic">.

Вы можете попробовать idBox = parseInt($(this).find('.basic').data("id"));

+0

Да, это сработало! Интересно, как код работает (или делает это) на своей демонстрационной странице. Спасибо всем, за помощь :) – void

1

Предполагая, что ваша проблема не $(this), используйте $(this).data("id"), чтобы получить атрибут data-id. Убедитесь, что вы используете jQuery 1.6 или новее.

+2

Это не проблема, ОП уже пробовал это ^^ – moonwave99

+0

Он пробовал '$ (this) .attr ('data-id')', и, кроме того, он не является предпочтительным методом получения атрибутов данных. Метод '.data()' jQuery. –

+0

@ moonwave99 Отредактировано. – Mooseman

Смежные вопросы