remove classes added by Jquery
I开发者_开发技巧 am working on an accordion and Jquery is adding classes, I want to stop jquery to add some classes. how can I do that? Below is the code but Jquery keeps on adding .ui-state-default to some visited elements.
if($check.hasClass('.ui-state-default')){
$(this)('.columns > span').removeClass('ui-state-default');
$(this)('.columns > span').addClass('ui-state-active');
}else
{
$(this)('.columns > span').removeClass('ui-state-active');
$(this)('.columns > span').addClass('ui-state-default');
}
As far as disabling the functionality of your accordion, see if this link has what you are looking for:
how to disable certain links of jquery accordion
As far as your code, in your hasClass
, you don't need the .
, and your find contexts are created incorrectly:
var element = $(this).find('.columns > span');
if($check.hasClass('ui-state-default')) {
element.removeClass('ui-state-default').addClass('ui-state-active');
} else {
element.removeClass('ui-state-active').addClass('ui-state-default');
}
As far as maintaining state, using .data
would make this process easier:
var elements = $(this).find('.columns > span'),
enabled = element.data('enabled');
elements.each(function() {
var element = $(this);
if (element.data('enabled')) {
element
.data('enabled', false)
.removeClass('ui-state-default')
.addClass('ui-state-active');
} else {
element
.data('enabled', true)
.removeClass('ui-state-default')
.addClass('ui-state-active');
}
});
At any time, you can know if an element is enabled or disabled by checking the .data('enabled')
data.
精彩评论