2011-10-22 11 views

risposta

51

La bolla di eventi focusin e focusout, gli eventi focus e blur no. Ciò significa che è possibile utilizzare focusin e focusout sull'elemento padre di un campo modulo.

Demo: http://jsfiddle.net/pAp4E/

HTML:

<div class="parent"> 
    <input type="text" /> 
</div> 

<div class="log"></div> 

Javascript:

$('.parent') 
    .focusin(function(){log('div focusin');}) 
    .focusout(function(){log('div focusout');}) 
    .focus(function(){log('div focus');}) 
    .blur(function(){log('div blur');}); 
$('input') 
    .focusin(function(){log('input focusin');}) 
    .focusout(function(){log('input focusout');}) 
    .focus(function(){log('input focus');}) 
    .blur(function(){log('input blur');}); 

function log(str){ 
    $('.log').append($('<div/>').text(str)); 
} 

quando lo si esegue, si vede che solo l'ingresso riceve tutti gli eventi, il genitore ottiene solo il focusin e focusout eventi.

+0

grazie per questo. – user960567

+0

agosto 2015 - Firefox non supporta ancora focusin/focusout (https://developer.mozilla.org/en-US/docs/Web/Events/focusin). L'uomo ha fatto cadere la palla ... –

+0

@ArnaudLeyder: Sì, non è ancora implementato in Firefox, ma jQuery lo emula. – Guffa

10

Gli eventi di messa a fuoco e sfocatura tengono traccia degli elementi su cui l'utente si concentra.

  1. fuoco

    Viene eseguito quando un elemento attivabile guadagna il focus

  2. sfocatura

    Viene eseguito quando un elemento attivabile perde il focus

  3. focusIn e focusOut

    Fuoco alla s tempo come messa a fuoco e sfocatura, ma bolla.

per esempio check this