2016-07-16 9 views
0

Ich versuche ein jquery-Ereignis zu löschen, wenn das Fenster> 490 wird. Die Elemente unblind() oder off() deaktivieren jedoch nicht die Aktion, die aktiviert wird, wenn das Fenster kleiner als 490px wird. Warum ist das? Kennt jemand eine Methode, um eine Auswahl in den ursprünglichen Zustand zurück zu versetzen? So lösen Sie das jQuery-Ereignis, wenn die Fenstergröße geändert wird

$(document).ready(function(){ 

    $(window).resize(function(){ 
    if ($(window).width()<490) { 
    $("#shown").unbind().click(function(){ 
     event.preventDefault(); 
     $("body div hidden").toggle('slow'); 
    }); 
    } 

    else if ($(window).widht()>=490) { 
     $("#shown").unbind(); 
     $("body div hidden").unbind(); 
    } 
    }); 
}); 

</script> 
+1

was genau möchten Sie erreichen? –

+1

Es wäre viel einfacher, die Fenstergröße im Click-Ereignis selbst zu überprüfen, als Event-Handler ständig zu binden/zu lösen. Sie können dies auch mit CSS allein erreichen, indem Sie eine Medienabfrage verwenden und "Zeiger-Ereignisse: keine" –

+0

"versteckte" Auswahl wirkt verdächtig. Ich denke, es ist ein Klassen- oder Pseudo-Selektor ': hidden', kein Elementtyp. Wie auch immer, du solltest besser Rorys Rat befolgen. –

Antwort

0

Hier ist, wie Sie erreichen können Sie die gewünschte, der Code unten wird das Fell Ereignis unbind basierend auf der Bildschirmgröße.

$(document).ready(function() 
 
{ 
 
var eventPresent = false; 
 
$(window).resize(function() 
 
{ 
 
console.log("current width : ", $(window).width()); 
 
    
 
if ($(window).width()<490 && eventPresent == false) 
 
{ 
 
$("#shown").unbind().click(function(event) 
 
{ 
 
    event.preventDefault(); 
 
    $("#divText").toggle('hide'); 
 
}); 
 
eventPresent = true; 
 
}  
 
else if ($(window).width()>=490 && eventPresent == true) 
 
{    
 
    $("#shown").unbind(); 
 
    $("#divText").show() 
 
    eventPresent = false;  
 
} 
 
    }); 
 
}); 
 

 
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 

 
<a id="shown">click me to hide text</a> 
 
    
 
<div id="divText"> 
 
       
 
You can not toggle me if screen is more than 490 px wide 
 
      
 
</div> 
 

P. S Führen Sie den Code-Schnipsel in voller Seitenmodus.

+0

Das sieht unglaublich gut aus. Obwohl es aussieht, funktioniert es nicht für die Option des Umschaltens. Sie sehen, die zu verbergende Sache ist ein Menü, ich möchte, dass der Benutzer die anderen Optionen sieht, wenn er auf "gezeigt" klickt. In dem Moment, in dem ich klicke, verschwindet das "Angezeigte" aber nicht mehr. Ich würde dich auch fragen, was die var, die console.log und die eventPresent true/false tun, aber vielleicht wäre das eine Lektion, für den Moment beglückwünsche ich mich zu deinen Fähigkeiten im Codieren! –

+0

Es funktioniert auch gut für Toggle, ich habe den Code für die gleiche aktualisiert. Lass es mich wissen, wenn dir das hilft. – Deep

+0

Es funktioniert, vielen Dank! : D –