Как передать несколько переменных через имя класса?
Я хочу создать общий / масштабируемый класс, который может принимать ни одну или несколько переменных и обрабатывать их. Я хочу узнать, как проверить, какое поле присутствует, количество переданных полей и что-то с этим сделать. Класс '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 ответа
Другим способом может быть использование атрибутов данных HTML5:
<div class="fruitstall" data-fruits="apple,orange"></div>
Тогда ваш код JS может пойти:
var fruits = $(this).data('fruits').split(',');
который получил бы множество всех фруктов для киоска.
Вы можете назначить несколько классов:
<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.
Я не знаю, может ли это сработать, но если вы подготовите свой класс 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