2011-01-07 46 views
5

Solo quiero habilitar/deshabilitar onclick y href en elementos (a o div).Deshabilitar (y volver a habilitar) los elementos href y onclick on

No sé cómo hacer esto.

Puedo desactivar onclick agregando un controlador en el evento click, pero el href aún está disponible.


$(this).unbind().click(function(event){ 
    event.preventDefault(); 
    return; 
}); 

Editar FOUND un corte para una serie de elementos


if ($(this).attr("href")) { 
    $(this).attr("x-href", $(this).attr("href")); 
    $(this).removeAttr("href"); 
} 
+0

Es una pregunta bastante vaga. ¿Qué es exactamente lo que estás tratando de hacer? Eliminar la propiedad 'href' también? –

+0

Ok, lo siento;) Solo quiero poder (haciendo clic en un botón), desactivar/habilitar todos los enlaces (clic o href) sobre los elementos (div o a) – jibees

Respuesta

5

Ok he encontrado una solución: poner una superposición sobre el div principal que contiene todos los elementos que quería desactivar ... Simplemente funciona.

+1

+1 Hacky, pero tan simple ... –

+0

O usa $ ("# divId"). Hide(); $ ("# divId"). show(); Gracias por la idea ;) – razvanone

1

Pruebe lo siguiente para desactivar el clic:

$ (este) .unbind ('clic');

2

puede probar con el siguiente:

$('a, div').click(
    function(e){ 
    return false; 
     // cancels default action *and* stops propagation 

    // or e.preventDefault; 
     // cancels default action without stopping propagation 
}); 

MDC documentation for preventDefault, jQuery documentation for event.preventDefault.

SO question: JavaScript event.preventDefault vs return false.

No estoy seguro del problema de "href sigue estando disponible", ya que el evento click se cancela; Sin embargo, si desea eliminar los href de a elementos:

$('a[href]').attr('href','#'); 

quitarán ellos (o, más bien, sustituir la URL con un #).


Editado en respuesta a comentar (a cuestionar) por OP:

Ok, lo siento;) Yo sólo quiero ser capaz (haciendo clic en un botón), para desactivar/activar todos los enlaces (o haga clic en href) más elementos (o un div)

$('#buttonRemoveClickId, .buttonClassName').click(
function() { 
    $('a, div').unbind('click'); 
}); 
$('#buttonReplaceClickId, .buttonOtherClassName').click(
function() { 
    $('a, div').bind('click'); 
}); 
+0

He encontrado una solución para los elementos a (que consiste en colocar el valor href en los atributos x-href para volver a habilitarlo). ¿Pero cómo puedo volver a habilitar el controlador onclick? – jibees

0

puede establecer el atributo href directamente a "" para evitar que el original de aparecer en la barra de estado, si eso es lo que está pidiendo.

$(this).unbind().click(function(event){ 
    event.preventDefault(); 
}).attr("href", ""); 

lo contrario, un event.preventDefault() ya deja de enlaces de ser puede hacer clic.

6

Si devuelve false en el evento onclick, el href está irgnored.

  1. Esto irá a Goole: <a href="http://www.google.com" onclick="alert('Go to Google')">Test</a>

  2. Esto no irá a Google: <a href="http://www.google.com" onclick="alert('Go to Google'); return false;">Test</a>

+0

la segunda línea debe ser: Test pauldendulk

+0

gracias. Ahora corregido – wosis

Cuestiones relacionadas