Reputation: 29
Please read here clearly:-
I want to add a class at <div id="targetdiv">
When i click on button <button id="btn">Btn</button>
, It will toggle class to <div id="dynamicdiv">
So i want when, The class toggle at <div id="dynamicdiv">
, a another class will toggle at <div id="targetdiv">
.
Working code:-
$(document).ready(function(){
$("#btn").click(function(){
$("#dynamicdiv").toggleClass("test")
})
function hasClass(){
if($('#dynamicdiv').hasClass('test') ){
$('#targetdiv').addClass('newclass');
}else {
$('#targetdiv').removeClass('newclass');
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dynamicdiv">sfasdfasf</div>
<div id="targetdiv"><h1>qwer</h1></div>
<button id="btn">Btn</button>
Upvotes: 0
Views: 91
Reputation: 158
As far as I know, there is no event listener for a class change. But you can create something similiar with an interval:
$(document).ready(function(){
$("#btn").click(function(){
$("#dynamicdiv").toggleClass("test")
});
function hasClass(){
$('#targetdiv').toggleClass('newclass', $('#dynamicdiv').hasClass('test'));
}
setInterval(hasClass, 100);
}
This will call the hasClass
function every 100 ms
Upvotes: 0
Reputation: 13689
$(document).ready(function(){
$("#btn").click(function(){
$("#dynamicdiv").toggleClass("test");
$('#dynamicdiv').hasClass('test')?$('#targetdiv').addClass('newclass'):$('#targetdiv').removeClass('newclass');
});
});
.test{
color:red;
font-size:36px;
font-weight:bold;
}
.newclass{
border:1px solid green;
background:blue;
color:white;
}
#targetdiv{
padding:8px;
height:90px;
width:180px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dynamicdiv">Dynamic Div</div>
<div id="targetdiv"><h1>Target Div</h1></div>
<button id="btn">Btn</button>
Upvotes: 0
Reputation: 24221
Not sure what -> function hasClass(){
you thought this was meant to do,. It was a function that was never called.
But I think below is what you was after.
$(document).ready(function(){
$("#btn").click(function(){
var d = $("#dynamicdiv");
d.toggleClass("test")
$("#targetdiv").
toggleClass("newclass", d.hasClass("test"));
})
});
.test {
background-color: red;
}
.newclass {
background-color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dynamicdiv">sfasdfasf</div>
<div id="targetdiv"><h1>qwer</h1></div>
<button id="btn">Btn</button>
Upvotes: 0
Reputation: 15509
You can do it all in the one function. I have done the update class with a ternary equartion. I added a red color to the newclass to demonstrate the class is being added / removed on subsequent button clicks.
$(document).ready(function(){
$("#btn").click(function(){
$("#dynamicdiv").toggleClass("test");
$('#dynamicdiv').hasClass('test')
? $('#targetdiv').addClass('newclass')
: $('#targetdiv').removeClass('newclass');
});
})
.newclass { color: red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dynamicdiv">sfasdfasf</div>
<div id="targetdiv"><h1>qwer</h1></div>
<button id="btn">Btn</button>
Upvotes: 0
Reputation: 106443
One possible approach:
$("#btn").click(function() {
var $dynamicDiv = $('#dynamicdiv');
$dynamicDiv.toggleClass('test');
$('#targetdiv').toggleClass('newclass', $dynamicDiv.hasClass('test'));
});
.toggleClass() can be given a second param, controlling the state of toggle:
state
Type: Boolean
A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.
Upvotes: 1