Cuando regresa false
desde un controlador de eventos que impide la acción predeterminada para ese evento y detiene la propagación de eventos a través del DOM. Es decir, que es el equivalente de hacer esto:
$('.dialogLink')
.click(function (event) {
dialog(this);
event.preventDefault();
event.stopPropagation();
});
Si '.dialogLink'
es un elemento <a>
entonces su acción predeterminada de clic es para navegar a la href
. Devolver false
desde el controlador de clic impide eso.
En cuanto a si es necesario en su caso, yo supongo que la respuesta es sí, porque desea mostrar un cuadro de diálogo en respuesta al clic en lugar de navegar. Si el elemento en el que ha insertado el controlador de clic no tiene una acción predeterminada al hacer clic (por ejemplo, normalmente no ocurre nada cuando hace clic en un div), entonces no necesita devolver falso porque no hay nada que cancelar.
Si usted quiere hacer algo en respuesta al clic, pero dejar que la navegación por defecto siguen a continuación, no return false.
Más información:
¿Sería lo mismo si codificado en esos dos eventos en la función de diálogo? – Alan2
Esas dos líneas no son eventos, son las llamadas a métodos de la 'event' objeto que se dará cuenta de que he añadido como parámetro a la función. jQuery establece ese parámetro para el objeto 'event' asociado con el evento que ocurra.Si pasó el objeto 'event' a la función' dialog() ', podría llamar a esos métodos, pero creo que es mucho más fácil de mantener si lo hace directamente donde lo he mostrado. Habiendo dicho eso, te recomiendo que te apegues al 'return false' que ya tienes: es más corto. – nnnnnn
Como alguien que acaba de toparse con este problema y se tomó un poco darse cuenta de lo que estaba pasando, yo diría que llamar 'return false' no es tan claro como decir para prevenir Default y detener Propagation. – aug