Как передать несколько переменных через имя класса? - PullRequest
0 голосов
/ 11 мая 2011

Я хочу создать универсальный / масштабируемый класс, который может принимать нет или несколько переменных и обрабатывать его. Я хочу узнать, как проверить, какое поле присутствует, количество переданных полей и что-то с этим сделать. Класс 'fruitstall' может принимать переменную 0 или несколько чисел.

HTML:

<div class="fruitstall(apple,orange)"></div>

Сценарий:

$('.fruitstall').click(function(event){
   if (get first variable value and check if it is an apple) {
      //Show apple image 
   } elseif (get the next variable value and check if it is an orange) {
      //Show orange image
   }
   alert('Number of fruit chosen are ' + (count number of variable passed to class) + ' ; ' fruit(index0) + fruit(index1));
});

Извините за пример с фруктовой лавкой, я подумал, что было бы интересно задать вопрос более живым способом. :)

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Другим способом может быть использование атрибутов данных HTML5:

<div class="fruitstall" data-fruits="apple,orange"></div>

Тогда ваш код JS может пойти:

var fruits = $(this).data('fruits').split(',');

, который получит массив всех фруктов для прилавка.

3 голосов
/ 11 мая 2011

Вы можете назначить несколько классов:

<div class="apple orange" id="divId"></div>

А затем разбить их на части так:

var classList =$('#divId').attr('class').split(/\s+/);
$.each( classList, function(index, item){
    if (item=='someClass') {
       //do something
    }
});

Источник: Получить список классов для элемента с jQuery

1 голос
/ 11 мая 2011

Я не знаю, может ли это сработать, но если вы подготовите свой класс String как JSON, вы можете использовать eval (), чтобы получить объект, из которого можно перечислить аргументы

 function prepareAsJSON(className){
        var JSON = "{list:function" + className + "{return arguments}}"
        return JSON
 }

 var className = $("div").attr('class');
 var st = prepareAsJSON(className);
 var obj = eval(st)
 obj.list() //should return arguments as an array

Я бы никогда не сделал этого в рабочем коде, но это довольно забавно

Приветствия

Grooveek

...