Give help. Get help.
I spent years working as a .NET developer, and working with other programmers that used crazy abbreviations and all lower case for their variables, and it just made it really really hard to follow the progression of their code. So I started Camel Case then and just kept going with it since to me, it made it more readable.
@theacefes – Kudos on your first CodePen
@hompimpa – I finally got it working with your example and a combination of getting that code coming after the jquery call.
@Everyone – Thank-you so much for all your help!
@hompimpa – that code doesn’t look quite right to me. The body is going to end up with basically all of the classes that are present on the page.
`$(this).hasClass(foo)` is always going to return true.
@ChristinaHooper – if you’re looking at a specific div only, this should be what you’re after:
$(document).ready(function() {
if( $(‘#target’).hasClass(‘blue’) ) {
$(document.body).addClass(‘yellow’);
}
});
@thedoc: That’s just an example. I guess @ChristinaHooper can understand what I mean :p
This is better:
$(document).ready(function() {
if ($('#target').length) {
var color = $('#target').attr('class');
$('body').addClass(color); // or: $('#target').parent().addClass(color);
}
});
<body>
...
<div id="target" class="red"></div>
...
<body>
I don’t think that’s better at all.
For starters, you don’t need to check `#target` length, that’s an extra step that isn’t necessary. Checking `hasClass()` will return true or false and will execute only if true. Since we’re only checking for something specific, this is significantly more effective.
Second, setting a variable isn’t what we’re looking for, since you’ll be collecting *all* classes assigned to the `#target` div. What if you are looking for a classing of `red` but want to add a class of `blue` to the body?
Third, `$(document.body)` should be used over `$(‘body’)` based on speed alone.
You’re adding things that aren’t particularly necessary to this issue, my friend!
@thedoc: Yes. You’re right: http://jsfiddle.net/tovic/yJ6Mg/18/
Hi, I’m new here but I saw TheDoc’s solution so I figured I should signup. I’m trying to add some colors to some CMS rendered code, and need a way to change a parent’s style, when an ID is present in the child. The problem is that new class is entered on all of the matching classes not just the one with the child.
if($(‘.lof-inner div’).hasClass(‘hot’)) {
$(“.lof-title”).addClass(“blinkurgent”);
}
eking try this: http://jsfiddle.net/SpVLK/3/
As u see both will work:
$(‘.lof-inner .hot’).closest(‘.lof-inner’).find(‘.lof-title’).addClass(‘blinkurgent’);
$(‘.lof-inner .hot’).siblings(‘.lof-title’).addClass(‘bold’);
Okay, I apologize for my confusion I’ve added this to my document like this but It’s not working any suggestions?
$(document).ready(function(){
$(“body”).focus(function(){
$(‘.lof-inner div.hot’).closest(‘.lof-inner’).find(‘.lof-title’).addClass(‘blinkurgent’);
$(‘.lof-inner div.hot’).siblings(‘.lof-title’).addClass(‘bold’);
});
});
Okay I got it to work in the CMS! (I had to change some settings) I’m trying to use this same method to change a background color, but it doesn’t seem to work. At first I just thought that it was the CMS but I also can’t get it to work in JS fiddle.
http://jsfiddle.net/eak819/jmFe7/
Is something incorrect?
$(‘.lof-inner div.hot’).siblings(‘.lof-row’).addClass(‘blackred’);
When sibling .lof-row is found it will add .blackred then CSS takes over from there. I’ve also tried to use the .closest selector but no joy.
You must be logged in to reply to this topic.