jquery - How to successively change a class on click -
suppose have list of div:
<div id='d-1' class='hidden'>this one<br /> <button onclick='next();'>next</button> </div> <div id='d-2' class='show'>second 1 <br /> <button onclick='next();'>next</button> </div> <div id='d-2' class='hidden'>third one<br /> <button onclick='next();'>next</button> </div> <div id='d-2' class='hidden'>fouth 1 <br /> <button onclick='next();'>next</button> </div>
and css:
.show { color: red; } .hidden { color: green; }
how can change classes successively?
i try by:
$(function(){ function next(){ $(this).removeclass('show').addclass('hidden'); } });
any help? here code injsfiddle:
edit
updated here
your question has several aspects try adress each 1 one. if use chrome dev tools can see console reports uncaught referenceerror: next not defined
. of error move function next()
outside of document ready. this
// not work $( document ).ready(function() { function next(){ $(this).removeclass('show').addclass('hidden'); } });
becomes this
function next(){ $(this).removeclass('show').addclass('hidden'); } $( document ).ready(function() { // next moved outside });
as can see not need document.ready
anymore.
the next error can see on chrome dev-tools uncaught typeerror: object [object object] has no method 'removeclass'
. reason method (as others have said) removeclass
changing error , 1 addclass
added console.log('this', this);
find out object this
points
function next(){ console.log('this', this); $(this).removeclass('show').addclass('hidden'); }
now can see in chrome dev tools this
points object window
. have reconsider how make sure next() points right object. pass id or in case jquery selector (# + id).
<div id='d-1' class='isactive'>first one<br /> <button onclick="next('#d-1');">next</button> </div>
i changed class names based on understanding mean.
function next(jqselector){ $(jqselector).removeclass('isactive').addclass('ispassive'); }
demo first part
no works first <div id='d-1' ...
. take look @ demo 1. assume want more. depends on mean. should click on button d1
- color d2 green , d1 red
- or should d1 made green , next div (d2) red.
option 1 make current active (red) others passive (green)
in demo under second headline button click makes parent div active (red-color) others passive
<div id='d-1' class='mydivs isactive'>first one<br /> <button onclick="makeactive('#d-1');">make active</button> </div> <div id='d-2' class='mydivs ispassive'>second one<br /> <button onclick='makeactive();'>make active</button> </div>
and javascript
function makeactive(jqselector){ console.log('makeactive', jqselector, $(".mydivs")); // set every element class .mydivs passive $(".mydivs").removeclass('isactive').addclass('ispassive'); // set 1 element active $(jqselector).removeclass('ispassive').addclass('isactive'); }
Comments
Post a Comment