简体   繁体   English

单击按钮时更改按钮形状

[英]Change Button Shape when clicking on it

I'm working on an evaluation system for students. 我正在为学生建立评估系统。 I want to change the grade of the student when the teacher clicks on it. 我想在老师单击时更改学生的成绩。 I have 2 "grade" images that I switch between like that: "A" , after click "B" ... & so on. 我有2个“等级”图像,它们之间可以像这样切换:“ A”,单击“ B”后,依此类推。 I now use a function that achieves this task, as follows: 我现在使用一个实现此任务的函数,如下所示:

  function ChangeClass(object) 
          {

            var objectClass = $(object).attr('class');


        if (objectClass == 'zero') {

            $(object).removeClass('zero');
            $(object).addClass('one');

        }
        else if (objectClass == 'one') 
        {

            $(object).removeClass('one');
            $(object).addClass('two');
        }
        else if (objectClass == 'two') {
            $(object).removeClass('two');
            $(object).addClass('zero');
        }
    }

But I don't like this solution, I guess there might be something easier in Jquery or something to change the buttons shape, or switch images with. 但是我不喜欢这种解决方案,我想Jquery中可能会更容易一些,或者可以更改按钮的形状或切换图像。 If you have any ideas, please share them =) 如果您有任何想法,请分享=)

Try this: 尝试这个:

var classes = ["zero", "one", "two"],
    i = classes.indexOf(object.className);
object.className = classes[(i + 1) % classes.length];

There's no need of jQuery, but keep in mind that indexOf for arrays isn't supported by IE8 and lower, and it must be emulated. 不需要jQuery,但请记住,IE8和更低版本不支持数组的indexOf ,并且必须对其进行仿真。

I'm assuming that object is a valid DOM element. 我假设该object是有效的DOM元素。

IF you want to use jquery working in all browsers you can use it: 如果要在所有浏览器中使用jquery,可以使用它:

       var max = 3; //total button or button class
       function ChangeClass(object){
                              var i = $(object).split('_')[1]; //this will explode 1 from className_1
                              var a = "className_" + i; // instead of zero, one, two use className_1, className_2, className_3
                              var b = (i+1) % max;
                              b = "className_" + b;
                              var x = "." + a;
                              $(x).click(function(){  
                                   $(this).removeClass(a).addClass(b);
                                });  
                              }

You can use this solution for any number of buttons, not only for 3 buttons-zero, one, two. 您可以将这种解决方案用于任意数量的按钮,而不仅仅是3个按钮-零,一,两个。 I hope this will help ! 我希望这个能帮上忙 !

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM