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.