Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766

    intercettare figli di un certo elemento

    Sono in questa situazione.
    ho dei[*] così composti

    codice:
    [*]
      <div class="data">25 lug</div>
       
      Fiera di Levante
      <div class="desc_news">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean et mi id orci volutpat posuere. </div>
    vorrei andare a spulciare una a una quelle classi .img_news e vedere se hanno effettivamente dentro una immagine o no e in tal caso metterle a display none. Ma il problema non è questo, il problema è che vorrei anche che la classe .desc_news avesse un certo margin-left (ma solo quando l'immagine non c'è.
    Ero partita con

    codice:
     
    $("#sinistra li .img_news").each(function (i){
         if (this.style.backgroundImage == 'url(nessuna.gif)'
           { 
    		 this.style.display= "none";
    	}
      });
    ma da qui non riesco chiaramente a controllare il "fratello" .desc_news.
    Allora pensavo di partire dal padre[*] e fare un ciclo each sui[*] ma poi non riesco a scrivere la sintassi giusta per verificare e assegnare le proprietà dei suoi figli.
    Come posso scrivere?

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Ti dico come intercettare il nodo fratello. Immaginiamo che this sia il nodo con class="img_news". Per ottenere il nodo fratello con class="news_desc" basta fare così.

    Se vuoi che la ricerca si muova solo verso il basso della pagina:

    codice:
    	var oFoundNode = null;
    	for (var iRSibl = this.nextSibling; iRSibl; iRSibl = iRSibl.nextSibling) {
    		if ((iRSibl.className || iRSibl.class) === "desc_news") { oFoundNode = iRSibl; break; }
    	}
    
    	// alert(oFoundNode.className);
    Se vuoi che la ricerca si muova solo verso l'alto della pagina:

    codice:
    	var oFoundNode = null;
    	for (var iLSibl = this.previousSibling; iLSibl; iLSibl = iLSibl.previousSibling) {
    		if ((iLSibl.className || iLSibl.class) === "desc_news") { oFoundNode = iLSibl; break; }
    	}
    
    	// alert(oFoundNode.className);
    Se vuoi che la ricerca si muova in entrambe le direzioni:

    codice:
    	var oFoundNode = null;
    	for (var iLSibl = this.previousSibling; iLSibl; iLSibl = iLSibl.previousSibling) {
    		if ((iLSibl.className || iLSibl.class) === "desc_news") { oFoundNode = iLSibl; break; }
    	}
    	for (var iRSibl = this.nextSibling; iRSibl; iRSibl = iRSibl.nextSibling) {
    		if ((iRSibl.className || iRSibl.class) === "desc_news") { oFoundNode = iRSibl; break; }
    	}
    
    	// alert(oFoundNode.className);

  3. #3
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Grazie Carlo!
    HO intercettato l'elemento però ora on riesco ad applicargli uno stile.
    Ho provato all'interno del if che verifica il nome della classe a scrivere castronerie varie tipo
    this.style.display= "none"; oppure oFoundNode = iRSibl; oFoundNode.style("margin-left","60px"), oFoundNode.css("margin-left","60px") e altre varianti con iRSibl ma non riesco a riferirmici nel modo corretto!

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    DOPO il codice che ti ho postato (senza modificarlo) scrivi oFoundNode.style.tuaProprietà = tuoValore;

  5. #5
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    ma è possibile che sono così deficiente da non riuscire?
    Allora questo va
    oFoundNode.style.display = "block";

    benissimo.
    Va anche questo:

    oFoundNode.style.margin = "60px";

    IL problema è che a me serve margin-left..

    ECCO! mentre scrivevo è arrivata la soluzione; il criceto nel cervello si dev'essere attivato:


    oFoundNode.style.margin = "0 0 0 60px"; FUNZIONA!

    NOn sapevo come scrivere il margin-left. Ma non dovrebbe funzionare anche oFoundNode.css("margin-left","60px")? Questo non va. Da altre parti una sintassi del genere aveva successo, qua è diverso?

    Cmq grazie KARL!

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    oFoundNode.style.marginLeft = 60;

  7. #7
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Porca miseria FUNZIONA! Grazie Vindav. Non mi sarebbe mai venuto in mente. Ma possibile che una sintassi così non la trovo sul sito jquery.com? Adesso ho provato a mettere "style.marginLeft" su Google e mi è uscito fuori come risultato il tanto vituperato w3schools.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    che centra jquery? questo è javascript nativo. Io w3schools lo trovo un ottimo sito in realtà, utile sopratutto per i principianti ma non solo...

  9. #9
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Mi sa che hai ragione. Andando a cercare il settaggio degli stili con Javascript, ho trovato.

    Anche io tempo fa lo consultavo spesso ma qui sul forum ne ho sentito parlare non benissimo; anzi mi sa che c'era stata una diatriba addirittura col W3C. Ora però non mi ricordo i dettagli.

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da ResianTaxidrive
    Anche io tempo fa lo consultavo spesso ma qui sul forum ne ho sentito parlare non benissimo; anzi mi sa che c'era stata una diatriba addirittura col W3C. Ora però non mi ricordo i dettagli.
    Se ti riferisci a questo, si trattava più che altro di una polemica personale&hellip;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.