2009-12-31 12 views
8

Ich habe Probleme, bestimmte Popup-Fenster, die auf divs basieren, zu verstecken. Wenn ich auf die Seite klicke, werden sie nicht versteckt. Hier ist der Beispielcode, was ich tun m ..Problem mit jquery blur() Ereignis auf Div-Element

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 

    <script type="text/javascript" src="../JS/jquery-1.3.2.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $("#MainCanvas div").blur(function() 
      { 
       alert("blured"); 
      }); 
     }); 
    </script> 

</head> 
<body> 
    <div id="MainCanvas" style="width: 400px; height: 350px; border: solid 1px black;"> 
     <div class="ui-widget-content" style=" vertical-align:middle; height:60px; border: solid 2px black; width:300px;"> 
      Drag me around 
     </div> 
    </div> 

</body> 
</html> 
+1

Duplizieren von http://stackoverflow.com/questions/1259716/how-to-blur-the-div-element –

Antwort

23

Wenn ich mich richtig erinnere, nur A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA- erstellen Fokus/Unschärfe Ereignisse. Wenn Sie das Popup-Fenster ausblenden möchten, indem Sie darauf klicken, müssen Sie beispielsweise auf Klickereignisse im Dokument hören und prüfen, ob das Ereignis innerhalb oder außerhalb des Popup-Fensters aufgetreten ist.

Beispielcode:

$(document).click(function(e){ 
    if($(e.target).is('#MainCanvas, #MainCanvas *'))return; 
    $('#MainCanvas').hide(); 
}); 
+3

arbeiten Oder Sie könnten nutzen mouseout, wenn Sie nicht möchten, dass Ihre Benutzer klicken müssen. Wenn sie irgendwo klicken müssen, können Sie auch eine Schließen-Schaltfläche im Dialog haben und darauf klicken. – tvanfosson

+0

Danke Rafael .. Ich habe den Punkt .. –

+0

@Jehanzebafridi vergessen Sie nicht, die Antwort zu überprüfen, die Sie als akzeptiert akzeptieren (das Symbol unter der Nummer links der Antwort) – Moak

0

Die beste Idee wäre, das mousedown- Ereignis zu behandeln und das Element überprüfen, die das Ereignis aufgerufen.

1

ich habe mit dem folgenden Code getan

<script> 
    $(document).click(function (e) { 
     if ($(e.target).is('._dpcontrol, ._dpcontrol *')) 
      return; 
     $('._dpcontrol').each(
       function (index, value) { 
        var retrivedtextbox = $(this).find('._dpitem')[0]; 
        $(retrivedtextbox).fadeOut(); 
       });  
    }); 
</script> 
1

Sie tabindex Attribut auf div Tag hinzufügen:

<div class="my_div" tabindex="3"></div> 

und nach diesem Event blur arbeiten werden:

$('.my_div').blur(function(){ 
    //code ... 
}); 
+0

funktioniert nicht -.- –

0

Ich lieh mir einen Tipp aus mehreren Lösungen, um etwas einfach zu machen. Grundsätzlich, wenn ich etwas fokussiere, möchte ich, dass es erscheint, aber wenn ich darauf klicke, möchte ich, dass es sich wieder versteckt. Wenn ich also auf etwas INNERHALB des angezeigten div klicke, wird mein Klick dann überprüft, ob es einen Elternteil namens "DivHoldingcustomController" findet. Wenn ja, tue nichts. Wenn dies nicht der Fall ist (weil ich irgendwo anders geklickt habe, also, was ich geklickt habe, habe ich dieses Elternelement nicht), dann blende den benutzerdefinierten Controller aus.

$(document).on("click", function (event) { 
     var groupSelectorArea = $(event.target).closest(".DivHoldingCustomController").length == 1; 
     if (!groupSelectorArea) 
      $(".SomethingIWantToHide").hide(); 
    }); 
0

können Sie verwenden mouseleave Methode und Lösung

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $("#MainCanvas div").mouseleave(function() 
     { 
      alert("mouseleave"); 
     }); 
    }); 
</script> 
0

jQuery hat .focusin() und .focusout() Methoden für Bindungsereignisse auf Elemente zu verwischen und zu konzentrieren, die nicht über eine native Javascript Unschärfe-Ereignis ausgelöst. jQuery focusout

3

für div Unschärfe focusout() wird

$('#divCustomerGroup').focusout(function() { 
      alert('yo'); 
     }); 
+0

nach oben! Einfach und elegant. –

+0

danke bro ... Yo –