使用jquery操作类

使用jquery操作类,jquery,dom-manipulation,Jquery,Dom Manipulation,我有一个带有值的选择框: 苹果-80 苹果-100 苹果-120 苹果-300 我有: 我想操纵body类apple-120,以替换为选择框中的任何选定值,同时保持水果、其他类、其他类、类不变 到目前为止,我创建了以下内容: $.fn.classSwitcher = function(options) { var baseOptions = { classTarget: 'body', oldClass: 'apple-120' }; var options =

我有一个带有值的选择框: 苹果-80 苹果-100 苹果-120 苹果-300

我有:

我想操纵body类apple-120,以替换为选择框中的任何选定值,同时保持水果、其他类、其他类、类不变

到目前为止,我创建了以下内容:

$.fn.classSwitcher = function(options) {
  var baseOptions = {
    classTarget: 'body',
    oldClass: 'apple-120'
    };

  var options = $.extend(baseOptions, options);

  return this.each(function() {
         $(this).click(function() { 
           var t = $(this);
           var optionVal = t.val();
             $(options.classTarget).removeClass(options.oldClass).addClass(optionVal);
         });
  });
};
那么我有:

$('#sel option').classSwitcher();
这取代了类,但在下一次单击选择框时,更多的选择选项值被添加为新类,这不是我想要的

我只是想用一个新的价值取代苹果-120,而不是增加更多。任何其他单击都将替换相同的目标类

另外,我还想获取所有的选择框值,将它们作为缩小这些类的选择范围的条件。表示,如果某个类与选择框中的任何值匹配,请执行某些操作


任何暗示都将不胜感激。谢谢。

问题在于您没有更新options.oldClass,因此它总是试图删除原始的apple-120。应将其设置为更新时分配的类:

...
     $(this).click(function() { 
       var t = $(this);
       var optionVal = t.val();
       $(options.classTarget).removeClass(options.oldClass).addClass(optionVal);
       options.oldClass = optionVal;
     });
...

问题是您没有更新options.oldClass,因此它总是试图删除原始的apple-120。应将其设置为更新时分配的类:

...
     $(this).click(function() { 
       var t = $(this);
       var optionVal = t.val();
       $(options.classTarget).removeClass(options.oldClass).addClass(optionVal);
       options.oldClass = optionVal;
     });
...

如果要记住以前调用的click的值,可以使用


如果要记住以前调用的click的值,可以使用


是否以任何方式更新options.oldClass中的值?options.oldClass应替换为选择框中的任何值。马克斯回答了。仅等待抓取选择值部分。谢谢您是否以任何方式更新了options.oldClass中的值?options.oldClass应替换为选择框中的任何值。马克斯回答了。仅等待抓取选择值部分。谢谢这一个到目前为止还有效,只是错过了结尾。我将用其他答案更新我的发现。谢谢。哦,选错了。你的密码真的坏了。有什么提示吗?我和Max answers一起进行了测试,但误认为它是你的,像往常一样缓存。到目前为止,这一个仍然有效,只是错过了结尾。我将用其他答案更新我的发现。谢谢。哦,选错了。你的密码真的坏了。有什么提示吗?我和Max answers一起测试,结果把它错当成了你和cache。嗨,Max。你解决了我的问题。我把它错在拉克兰身上了。答案也在跳跃:关于抓取所有选择框值的任何提示?谢谢我不知道你抓取选择框值是什么意思。您只需通过$'sel option'获取所有元素即可。toArray然后获取它们的.value.Hi,Max。您解决了我的问题。我把它错在拉克兰身上了。答案也在跳跃:关于抓取所有选择框值的任何提示?谢谢我不知道你抓取选择框值是什么意思。您只需通过$'sel option'.toArray获取所有元素,然后获取它们的.value。