Jquery - 如何通过类名传递多个变量?

时间:2011-05-11 14:56:09

标签: jquery class-variables

我想创建一个通用/可扩展的类,它能够接受无或多个变量并对其进行处理。我想学习如何检查哪个字段存在,字段数通过并用它做一些事情。 '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 个答案:

答案 0 :(得分:3)

您可以分配多个课程:

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

然后像这样对它们进行拆分:

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

来源:Get class list for element with jQuery

答案 1 :(得分:3)

另一种方法可能是使用HTML5数据属性:

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

然后你的JS代码可以去:

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

这将得到一个停止所有水果的数组。

答案 2 :(得分:1)

我不知道这是否可行,但是如果你准备将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