Mulla on divi:
<div id="a" class="default"><span>teksti1</span></div>
Miten saisin jqueryllä muutettua teksti1:sen teksti2:ksi divin classin mukaan.
esim.
Jos class="default" näytä teksti1 muuten näytä teksti2.
$(":not(.default)").text("Teksti1");
Ellen nyt ihan jäässä ole (en siis ole testannut). Ota tosin huomioon että tuo tosiaan muuttaa kaikkien elementtien tekstin (?) jos kyseessä ei ole default-classin omaava elementti... Eli varmaankin haluat tehdä jonkinlaisen rajauksen, että esim. vaikka div#containerin sisällä olevissa diveissä vain toteutetaan tuo.
$("div#container > div:not(.default)").text("Teksti1");
Mites tuon tekstin saa menemään <span> -tagien sisään? Nyt jää niiden ulkopuolelle.
Laitoin mukaan koodirimpsun jos joku muukin haluaa tsekata.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { $("div#container > div:not(.default)").text("Teksti2"); }); </script> <style type="text/css"> <!-- #container #a span { color: red; } --> </style> </head> <body> <div id="container"> <div id="a" class="not_default"><span id="testi">default</span></div> </div>
No laita siihen CSS-valitsimeen span mukaan. Nythän se valitsee suoraan div:not(.default)-elementit.
Metabolix kirjoitti:
No laita siihen CSS-valitsimeen span mukaan.
Mitenkäs tämä tapahtuisi?
CSS-valitsimet siis toimivat kuten CSS:ssä yleensäkin. Eli kuten vaikka olet jo määritellyt aiemmassa CSS:ssä käyttäen välilyöntiä:
$("div#container > div:not(.default) span").text("Teksti2");
Voit toki myös korvata > merkinnän ihan vain välilyönnillä, tuolla > -merkillä taidetaan hyväksyä vain suorat lapset, välilyönnillä taas hyväksytään lapsenlapset jne. myös mukaan. Eli yleisempi merkintä vähän löysemmillä hyväksymisperusteilla:
$("div#container div:not(.default) span").text("Teksti2");
http://api.jquery.com/descendant-selector/
http://api.jquery.com/category/selectors/
Aihe on jo aika vanha, joten et voi enää vastata siihen.