使用jquery操作类
我有一个值为的选择框:apple-80 apple-100 apple-120 apple-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();
这取代了类,但是在下一次单击选择框时,会有更多选择值作为新类添加,这不是我想要的。
我只想用新值替换“apple-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; }); ...
如果您想记住以前调用click的值,可以使用data()存储该值
$(this).click(function() { var val = $(this).val(); if (val != $(this).data('previous')) { $(this).data('previous', val ); // ... } });