2012-02-24 7 views
5

Tengo enlaces dentro de <td> s, pero también tengo un evento de clic en todos <td> s. El código es el siguiente:Seguir el enlace dentro del evento clic de JQuery

$(document).ready(function() { 
    $('td.event').click(function() { 
     var eventName = prompt('Enter event:'); 
     if (eventName != null && eventName.length > 0) { 
      window.location = '?event=' + eventName; 
     } 
    }); 
}); 

Quiero simplemente siga el enlace sin mostrar la ventana emergente si el usuario hace clic en el enlace, sino para mostrar la ventana emergente si el usuario hace clic en cualquier otro lugar del <td>. ¿Es esto posible en JQuery?

+0

Ha intentado definir el evento 'click' en todos los' a' elementos a través de jQuery? –

Respuesta

3

Añadir esto al final de su manejador document.ready:

$('td.event a').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

Parece que la secuencia de comandos no actúa de manera diferente con este código. ¿El evento se propaga desde el elemento más interno hacia fuera o hacia afuera? –

+0

Debería funcionar. ¿Pusiste esto dentro del controlador 'document.ready'? Debería estar dentro de ese controlador. Vea la demostración en [jsfiddle] (http://jsfiddle.net/32hXu/1/). – bfavaretto

+0

Lo siento, funcionó, me acabo de enterar ahora que deletreé 'stopPropagation()' como 'stopPropogation()' que causó que el script fallara silenciosamente. Gracias por su tiempo y paciencia. –

0

Se podría ser de ayuda.

$("td.event a").click(function(e){ 
    e.stopPropagation(); 
}); 
3
function yourFunction() 
{ 
    var eventName = prompt('Enter event:'); 

    if(eventName != null && eventName.length > 0) { 
     window.location = '?event='+eventName; 
    } 
} 

$('td').click(function() { 
    yourFunction(); 
}); 

$('td a').click(function() { 
    window.location = $(this).attr('href'); 
}); 

debe hacer el truco.

+0

Sigue el enlace cuando hace clic en él, pero el mensaje sigue apareciendo. ¿Hay alguna forma de suprimir el mensaje cuando se hace clic en el enlace? –

0

esto debería hacerlo.

<!DOCTYPE html> 
<html> 
<head> 
    <script src="jquery.js"></script> 
    <script> 
     $(document).ready(function() { 
      $("td").click(function(event){ 
       if(!event.isPropagationStopped()) { 
        var eventName = prompt("Enter event: "); 
        if(eventName != null && eventName.length > 0) { 
         window.location = "?event=" + eventName; 
        } 
       } 
      }); 
      $("a").click(function(event){ 
       event.stopPropagation(); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <table> 
     <tr> 
      <td style="background-color: grey; width: 100px; height: 20px;"> 
       <a href="http://www.google.be">google</a> 
      </td> 
     </tr> 
    </table> 
</body> 

Cuestiones relacionadas