2010-12-01 15 views

Respuesta

1
event.preventDefault(); 
event.stopPropagate(); 
+0

No, este evento de cancelación pero la acción sigue funcionando – Simbian

+1

'stopPropagation()', no "stopPropogate()" – earl3s

3

No estoy seguro sobre el cambio, pero para otros eventos en jqueryui return false cancela el evento.

+0

Esto funciona porque return false es equivalente a llamar a 'e.preventDefault();' y 'e.stopPropagation();' – earl3s

3

stopPropagation() es la clave para detener el procesamiento de una acción jQueryUI, pero debe interrumpirse ANTES del evento changestart. Por ejemplo, cuando se hace clic en el elemento del encabezado.

Si se trata de un/pair contenido de la cabecera en su acordeón:

<h3 class='noexpand'>This is a dummy header</h3> 
<div>This is dummy content</div> 

entonces esto va a evitar que el acordeón de la expansión de la div cuando se hace clic en el encabezado:

$("h3.noexpand").click(function(e) { 
    e.stopPropagation(); 
}); 

Ver jquery accordion prevent bubbling/allow default link action.

2

Como dijo Martin, puede devolver el resultado falso. Vea un ejemplo de código a continuación.

... 
eventname: function(event, ui) { 
    // Add your code here 
    ... 

    return false; 
} 
0

Volviendo falsa no hace nada, para cancelar un evento en jQueryUI necesita llamar a preventDefault() en el evento.

$("#accordion").accordion({ 
    changestart: function (event, ui) { 
     event.preventDefault(); 
    } 
}); 

Esto debería funcionar con todos los métodos de evento, incluido el autocompletado. Útil si desea incluir algunas opciones personalizadas en su menú de autocompletar que desea que alguien seleccione, pero que realmente no desea agregar a la entrada a la que está vinculado. :)

+0

"Estos manejadores, por lo tanto, pueden evitar que el manejador delegado se dispare llamando a event.stopPropagation() o devolviendo false." - http://api.jquery.com/event.stoppropagation/ – bitoiu

+0

Esto en realidad no funciona. Fue mi primer pensamiento también. – earl3s

0

Lo que funcionó para mí está llamando:

function onChange(e, ui) { 
    e.preventDefault(); 
    e.stopPropagation(); 
} 

Volviendo false al final de la función tiene el mismo efecto porque es el equivalente de hacer esas dos llamadas a funciones.

Cuestiones relacionadas