如何在jQuery / Javascript中编写switch语句来测试一个元素是否有特定的类?
这是我正在使用的if-else语句的结构:
$('.myclass a').click(function() { if ($(this).hasClass('class1')) { //do something } else if ($(this).hasClass('class2')) { //do something } else if ($(this).hasClass('class3')) { //do something } else if ($(this).hasClass('class4')) { //do something } else { //do something } });
已经有很多案例,我认为使用switch语句会更整洁。 我如何在jQuery / javascript中执行此操作?
问题是用户可能有多个课程。 否则你可以这样做:
$('.myclass a').click(function() { var className = $(this).attr('class'); switch(className){ case 'class1': //put your cases here } });
试试这个。 不太清洁,但仍然是一个转换声明。
$('.myclass a').click(function() { switch (true) { case $(this).hasClass('class1'): // do stuff break; case $(this).hasClass('class2'): // do stuff break; case $(this).hasClass('class3'): // do stuff break; } }
我认为最干净的方式可能就是这样:
$('.myclass a.class1').click(function() { // code to process class1 }); $('.myclass a.class2').click(function() { // code to process class2 }); $('.myclass a.class3').click(function() { // code to process class3 }); $('.myclass a.class4').click(function() { // code to process class4 });
如果你有很多,你甚至可以把它们放在这样的数据结构中:
// to define them all var classHandlers = { class1: function() { // class1 code here }, class2: function() { // class2 code here }, class3: function() { // class3 code here }, class4: function() { // class4 code here } }; // to register them all $.each(classHandlers, function(key, fn) { $('.myclass a.' + key).click(fn); });
既然你已经(在评论中)询问如何为没有类名的对象做事件处理程序,那么如果你没有找到类名,你可以这样做:
$(".myclass a").not("[class]").click(function() { // code to handle objects with no class name here });
我在这里测试了它: http : //jsfiddle.net/jfriend00/TAjKR/
我不认为单个switch语句在这里会有所帮助,因为一个元素可以有多个类,并且你不能使用elem.className来切换。 一个选项是以更易读的方式构造代码,使用带有开关的for语句……:
$('.myclass a').click(function() { var classes = ["class1", "class2", "class3","class4"]; var self = $(this); for(var i =0, ii = classes.length;i
要在switch语句中检查hasClass:
var elementClass; var classCheck = $('#myElement').hasClass(elementClass) switch(classCheck){ case elementClass === 'foo': console.log('whatever'); break; }
我知道这已经晚了,你的用户只有一个class级,但是,如果有多个class级:
// // switch(true) { case 'foo': true; break; case 'other': true; }
$("#isTest").click(function () { if($('div').is('.redColor')){ $('div').addClass('blueColor'); } }); $("#hasClassTest").click(function () { if($('div').hasClass('.redColor')){ $('div').addClass('blueColor'); } }); $("#reset").click(function () { location.reload(); });
jQuery check if an element has a certain class
This is a div tag with class name of "redColor"