2016-04-29 5 views
1

Ich habe einzelne drei Pfeile. auf Klick; Ich möchte das div unter ihnen (letsChat) Stile ändern und ich möchte relevante Informationen in diesem div klonen und anhängen. Ich möchte auch, dass es wieder in seinen ursprünglichen Zustand zurückkehrt, wenn erneut darauf geklickt wird oder wenn die Ausrichtung in Hochformat geändert wird..clone(). AppendTo - ersetzen Elementstile nicht funktioniert?

document.querySelector('#compositionArrow').onclick = function(){ 
 
    var letsChat = document.querySelector('.lets-chat'); 
 
    var letsChatButton = document.querySelector('.lets-chat a'); 
 
    var compositionArrow = document.querySelector('#compositionArrow') 
 
    var compositionText = document.querySelector('.composition-text'); 
 

 
    if (letsChatButton.style.display='flex' && window.matchMedia("(orientation: landscape)").matches) { 
 
     
 
     compositionArrow.style.transform='rotate(180deg)'; 
 

 
     //letsChat.appendChild(compositionText).cloneNode(true); 
 
     //compositionText.clone().appendTo.letsChat; return false; 
 
     document.querySelector('.composition-text').clone().appendTo(document.querySelector('.lets-chat')); 
 
     letsChat.style.background='#00BCD4'; 
 
     letsChatButton.style.display='none'; 
 
    } 
 
    
 
    else if (letsChatButton.style.display='none' || window.matchMedia("(orientation: portrait)").matches){ 
 
     
 
     compositionArrow.style.transform='rotate(180deg)'; 
 

 
     letsChat.style.background='#ff8f00'; 
 
     letsChatButton.style.display='flex'; 
 
    } 
 
}

Beispiel finden Sie unten: (Sie mit Fenster spielen müssen möglicherweise

artpenleystudios.com

Antwort

0

Hier ist etwas, das Teil von dem, was zeigt, fragte man es nicht tut. Orientierungsänderung berücksichtigen, aber es behandelt den Klick-Teil.Wenn ich weiß, gibt es keine einfache Möglichkeit, Orientierungsänderung zu erkennen, aber here's an article that talks about a few options. Eine andere Idee wäre zu Verwenden Sie jQuery Mobile, da es orientationchange Ereignisse auslöst.

Also nach viel Hin und Her und nach genauerem Hinsehen auf Ihre Seite, das ist es, was ich geschafft habe zusammen zu cobble.

jQuery('#compositionArrow').click(function() { 

    var $letsChat = jQuery('.lets-chat'); 
    var letsChat = $letsChat[0]; 
    var letsChatButton = $letsChat.find('a')[0]; 

    // Remove old composition text if it exists. 
    $letsChat.find('.composition-text').remove(); 

    if (letsChatButton.style.display !== 'none' && window.matchMedia("(orientation: landscape)").matches) { 

    this.style.transform = 'rotate(180deg)'; 

    $letsChat.append(jQuery('.composition-text').clone()); 
    letsChat.style.background = '#00BCD4'; 
    letsChatButton.style.display = 'none'; 
    } 

    else if (letsChatButton.style.display === 'none' || window.matchMedia("(orientation: portrait)").matches) { 

    this.style.transform = ''; 

    letsChat.style.background = '#ff8f00'; 
    letsChatButton.style.display = 'flex'; 
    } 

}); 

Es funktioniert für mich in FireFox auf einer heruntergeladenen Version Ihrer Website.

Prost!

+0

Danke! das ist genau das, was ich brauche, außer auf meiner debug kommt mit "Uncaught TypeError: $ ist keine Funktion" und funktioniert nicht? Ich habe versucht, jQuery neu zu verknüpfen und dann hat es einfach nichts getan ?! so seltsam –

+0

@ArtPenley - Interessant. Die von Ihnen verlinkte Website scheint jQuery zu enthalten. Vielleicht überschreibt etwas anderes ** $ **. Ich habe mein Code-Snippet (oben) aktualisiert, um dies zu kompensieren. Wenn das immer noch nicht funktioniert, wandle ich es wieder in normales JavaScript um. Gib mir Bescheid! – CaffeineFueled

+0

Vielen Dank für Ihre Hilfe Ich schätze es wirklich, es funktioniert immer noch nicht? Es gibt nicht einmal irgendwelche Fehler? es passiert einfach nichts? –