2010-02-08 22 views
6

Con la siguiente pieza de código ... ¿Es posible decir que, si se hizo clic en el li, haga esto si no (haga clic en otro lugar)? El código solo hará que el div desaparezca si el usuario hace clic en algo de la lista. ¿Necesito que desaparezca si hacen clic en cualquier otro lugar también ...? ¡Gracias!jQuery si hace clic?

.bind('blur', function() { 
    $('#search_suggestions_list li').click(function() { 
     var selectedString = $(this).text(); 
     $('#search-box').val(selectedString); 
     setTimeout("$('#search_suggestions').fadeOut('fast');", 200); 
    }) 
}) 

Respuesta

8
$(document).click(function(){ 
    //user clicked anywhere on the page 
}); 

$('#search_suggestions_list li').click(function() { 
    //user clicked on the li 
    return false; 
}); 

Asegúrese de volver falso, de lo contrario el caso de documento, haga clic se llamará así.

+0

$ (document) .click() siempre se disparará en cualquier clic – hunter

+7

Al devolver falsa , deja de burbujear, por lo que la función document.click no se ejecutará. Puede que haya entendido mal la pregunta, pero me suena a lo que está pidiendo. – munch

+0

+1 esto debería funcionar si agrega '$ ('# search_suggestions_list'). Hide()' o algo similar en el evento de clic de documento, y/o elimina el tiempo de espera que muestra las sugerencias de búsqueda. –

0
$('#search_suggestions_list li').click(function() { 
    var selectedString = $(this).text(); 
    $('#search-box').val(selectedString); 
    setTimeout("$('#search_suggestions').fadeOut('fast');", 200); 
}) 

$('#search-box').blur(function(){ 
    // do something else 
}); 
3

Gestione el evento click en el documento, y luego maneje el evento click en su li. Dentro del evento Click para el li, utilice la función stopPropogation para evitar el documento (padre) haga clic en caso de disparar ...

$(document).click(function() { 
    // Clicked outside the LI 
}); 

$('#search_suggestions_list li').click(function(e) { 
    var selectedString = $(this).text(); 
    $('#search-box').val(selectedString); 
    setTimeout("$('#search_suggestions').fadeOut('fast');", 200); 

    e.stopPropagation(); // Stops document.click from firing 
}) 
Cuestiones relacionadas