2014-10-03 5 views
0

Я добавляю класс в поле в зависимости от содержимого этого поля, чтобы я мог по-разному настраивать каждое поле в зависимости от содержимого. Представьте себе рейтинг гамбургера от одного до десяти ... Я хочу заменить рейтинг изображением для одного, другое изображение для двух ... и так далее.Добавление класса в поле Drupal через выходы jQuery неправильный цикл

Для этого мне нужно, чтобы каждый класс поля отражал содержимое поля. Вот код, который я использую:

Drupal.behaviors.burgerRating = { 
attach: function (context, settings) { 
    var burgerRating = $('.field-name-field-rating2').text(); 
    $('.field-name-field-rating2').addClass(burgerRating); 
    } 
} 

Это выводит содержимое поля как класс, который я могу создать. Однако в блоге Просмотр с примерами трех сообщений на странице, этот код добавляет все три класса ко всем трем полям, когда мне нужно каждое конкретное содержимое поля для каждого экземпляра поля.

Что я получаю это:

<div class="field-name-field-rating2 rating-1 rating-5 rating-8"> 
<div class="field-name-field-rating2 rating-1 rating-5 rating-8"> 
<div class="field-name-field-rating2 rating-1 rating-5 rating-8"> 

Вместо:

<div class="field-name-field-rating2 rating-1"> 
<div class="field-name-field-rating2 rating-5"> 
<div class="field-name-field-rating2 rating-8"> 

Я думаю, мне нужно, чтобы получить эту работу с .this() или .each(), но Я не могу заставить его работать.

Любая помощь? Благодарю.

+0

Кстати, это 'this', а не' .this() '. О вашем вопросе: try '$ (this) .addClass (burgerRating);' или '$ (контекст) .addClass (burgerRating);' – Regent

+0

Ах да ... спасибо, что указали это. Я пробовал (это) и (контекст) ... ни один из них не работал. –

ответ

0

Зачем это делать в Javascript? Вы можете:

форматировщик путь отображается поле. Это зависит от типа поля (текст, номер, таксономия_оценка, ...). Если ваше рейтинговое поле является полем , вы должны создать свой форматтер для текстового поля. После его создания все текстовые поля могут использовать этот форматтер.

Вы должны ассоциированного это форматировочное в свою область на вкладке отображения вашего типа контента.

enter image description here

Это удивительная система, вы можете добавить настройки для формирования форматировщика, а также (hook_field_formatter_settings_form)

+0

Спасибо за это. Я выбрал только маршрут jQuery, поскольку я думал, что это может быть проще. Это не так, и ваш метод шаблонов полей работал. Еще раз спасибо. –