I want to change the class of a td tag given the td tag's id:
<td id="td_id" class="change_me"> ...
I want to be able to do this while inside the click event of some other dom object. How do I grab the td's id and change its class?
I want to change the class of a td tag given the td tag's id:
<td id="td_id" class="change_me"> ...
I want to be able to do this while inside the click event of some other dom object. How do I grab the td's id and change its class?
Using jQuery
You can set the class (regardless of what it was) by using .attr()
, like this:
$("#td_id").attr('class', 'newClass');
If you want to add a class, use .addclass()
instead, like this:
$("#td_id").addClass('newClass');
Or a short way to swap classes using .toggleClass()
:
$("#td_id").toggleClass('change_me newClass');
Here's the full list of jQuery methods specifically for the class
attribute.
.closest('td')
instead of .parents('td:first')
:) –
Cultivar I want to be able to do this while inside the click event of some other dom object. How do I grab the td's id and change its class?
- maybe i am reading it wrong, maybe he means use the td's id to change the class... –
Praetor <td>
in question :) –
Cultivar change_me
part is optional if you use toggleClass()
–
Jacquelynnjacquenetta I think you're looking for this:
$('#td_id').removeClass('change_me').addClass('new_class');
I think he wants to replace a class name.
Something like this would work:
$(document).ready(function(){
$('.blue').removeClass('blue').addClass('green');
});
from http://monstertut.com/2012/06/use-jquery-to-change-css-class/
You can do This :
$("#td_id").removeClass('Old_class');
$("#td_id").addClass('New_class');
Or You can do This
$("#td_id").removeClass('Old_class').addClass('New_class');
So you want to change it WHEN it's clicked...let me go through the whole process. Let's assume that your "External DOM Object" is an input, like a select:
Let's start with this HTML:
<body>
<div>
<select id="test">
<option>Bob</option>
<option>Sam</option>
<option>Sue</option>
<option>Jen</option>
</select>
</div>
<table id="theTable">
<tr><td id="cellToChange">Bob</td><td>Sam</td></tr>
<tr><td>Sue</td><td>Jen</td></tr>
</table>
</body>
Some very basic CSS:
#theTable td {
border:1px solid #555;
}
.activeCell {
background-color:#F00;
}
And set up a jQuery event:
function highlightCell(useVal){
$("#theTable td").removeClass("activeCell")
.filter(":contains('"+useVal+"')").addClass("activeCell");
}
$(document).ready(function(){
$("#test").change(function(e){highlightCell($(this).val())});
});
Now, whenever you pick something from the select, it will automatically find a cell with the matching text, allowing you to subvert the whole id-based process. Of course, if you wanted to do it that way, you could easily modify the script to use IDs rather than values by saying
.filter("#"+useVal)
and make sure to add the ids appropriately. Hope this helps!
EDIT:
If you're saying that you're changing it from a nested element, you don't need the ID at all. You can do this instead:
$(this).closest('td').toggleClass('change_me some_other_class');
//or
$(this).parents('td:first').toggleClass('change_me some_other_class');
Original answer:
$('#td_id').removeClass('change_me').addClass('some_other_class');
Another option is:
$('#td_id').toggleClass('change_me some_other_class');
<td>
, though he might be, re-read carefully :) –
Cultivar In the event that you already have a class and need to alternate between classes as oppose to add a class, you can chain toggle events:
$('li.multi').click(function(e) {
$(this).toggleClass('opened').toggleClass('multi-opened');
});
$('.btn').click(function() {
$('#td_id').removeClass();
$('#td_id').addClass('newClass');
});
or
$('.btn').click(function() {
$('#td_id').removeClass().addClass('newClass');
});
this method works well for me
$('#td_id').attr('class','new class');
change class using jquery
try this
$('#selector_id').attr('class','new class');
you can also set any attribute using this query
$('#selector_id').attr('Attribute Name','Attribute Value');
Here is the solution using jQuery
:
$(document).ready(function(){
if($('#td_id').hasClass('change_me')) {
$('#td_id').removeClass('change_me').addClass('something_else');
}
});
I better use the .prop to change the className and it worked perfectly:
$(#td_id).prop('className','newClass');
for this line of code you just have to change the name of newClass, and of course the id of the element, in the next exemple : idelementinyourpage
$(#idelementinyourpage).prop('className','newClass');
By the way, when you want to search which style is applied to any element, you just click F12 on your browser when your page is shown, and then select in the tab of DOM Explorer, the element you want to see. In Styles you now can see what styles are applied to your element and from which class its reading.
© 2022 - 2024 — McMap. All rights reserved.
var $td = $(this).parents('td:first')
] then gets it's id [var id = $td.attr('id');
] and also the class [var class = $td.attr('class');
] because he wants a click element inside the TD to trigger it – Praetor