получение атрибута из DOM с помощью jQuery

#jquery

#jquery

Вопрос:

Я использую этот плагин jQuery star rating, и я хотел бы получить название звезды, на которую я нажал. Здесь можно подправить код. Как я могу получить имя элемента, на который нажимается?

Комментарии:

1. попробуйте проверить view -> source страницы, чтобы проверить, что отображается в соответствии со звездочками для вашего плагина…

2. Я вообще не могу запустить обратный вызов, что бы я в него ни поместил…

3. Ваш js файл в разделе ресурсов выполняет функцию, выполнявшуюся ранее. rating() Проверьте эту скрипку, чтобы увидеть проблему. jsfiddle.net/Hg2xF

4. Я исправил ссылку на правильную скрипку

Ответ №1:

Похоже, что этот рейтинговый плагин создает свои собственные «звезды», чтобы заменить те, которые у вас есть в вашем исходном HTML, и у них нет того же name атрибута.

Комментарии:

1. значит, я должен использовать другое имя класса? вопрос в том, как мне получить имя

Ответ №2:

С помощью jQuery:

 $(document).ready(function(){
     $('.star').click(function(){
          alert($(this).attr('name'));
     });
});
  

ПОДСКАЗКА: Вероятно, вам следует присвоить каждой из ваших звезд уникальный идентификатор, чтобы вы действительно знали, на что нажимается.

Комментарии:

1. на самом деле это внутри fancybox, поэтому, когда я это делаю, я получаю имя fancy box

2. Затем манипулируйте им, чтобы перейти к дочерним элементам, чтобы найти элемент, который вы ищете?

3. Извините, но он выполнял функцию раньше, и поэтому она не работала.

Ответ №3:

вот так:http://jsfiddle.net/ezmilhouse/7mY7w /

 $('.star-rating-control a').live('click.app',function() {
    var parent_classes = $(this).parent('div').attr('class');
    console.log(parent_classes);
    var arr = parent_classes.split(" ");
    var rater = arr[1];
    console.log( rater );
    var rating = $( "."   rater   ".star-rating-on" ).length;
    console.log(rating)
    alert( rater   " has a rating of "   rating  );

    // save in database
    var toBeSaved = rater   '-'   rating; // ex.: rater-1-4

    // or 
    var group = rater.split("-")[1];
    var stars = rating;

});
  

Комментарии:

1. у звезд на самом деле нет имени, но комбинация ‘rater’ (группа звезд) плюс ‘rating’ (выбранная звезда) должна помочь

2. На самом деле я хочу получить имя .. поскольку я буду использовать это как идентификатор для публикации в БД

3. вы могли бы сохранить селектор: var toBeSaved = rater ‘-‘ рейтинг; (rater-1-4)

Ответ №4:

Вот ваше решение. Скрипт, который вы включили в раздел ресурсов, выполнял функцию раньше, поэтому он дважды отклонял выполнение одной и той же функции. Ниже приведена ссылка на ваше решение. Не увидите никаких изменений вообще, и вы можете делать все, что захотите, с функциональными переменными value и link !

РЕШЕНИЕ-1

РЕШЕНИЕ-2

Комментарии:

1. У меня есть fancybox с фреймом I, ваше решение использует alert($(this).attr(‘name’)); в моем случае он возвращает имя fancybox… как мне выполнить итерацию вплоть до звезды?

2. Попробуйте эту скрипку. jsfiddle.net/yFzgL (Прокрутите влево и щелкните на любой звездочке, которую вы хотите!) Надеюсь, это поможет!