2012-02-24 11 views
5

I link sono all'interno di <td> s, ma ho anche un evento click su tutti gli <td> s. Il codice è simile al seguente:Segui il link all'interno dell'evento click JQuery

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

voglio seguire semplicemente il link senza mostrare il popup se l'utente fa clic sul collegamento, ma per mostrare il popup se l'utente fa clic in qualsiasi altra parte del <td>. È possibile in JQuery?

+0

Hai provato che definisce il fatto 'click' su tutti gli' ovvero a un'analisi elementi tramite JQuery? –

risposta

3

Aggiungere questo fino alla fine della vostra document.ready gestore:

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

Lo script non sembra comportarsi diversamente con questo codice. L'evento si propaga dall'elemento più interno verso l'esterno o più esterno? –

+0

Dovrebbe funzionare. Lo hai inserito nel gestore di 'document.ready'? Dovrebbe essere all'interno di quel conduttore. Vedi demo su [jsfiddle] (http://jsfiddle.net/32hXu/1/). – bfavaretto

+0

Spiacente, ha funzionato, ho appena scoperto che ho scritto 'stopPropagation()' come 'stopPropogation()' che ha causato il fallimento dello script in modo silenzioso. Grazie per il tuo tempo e la tua pazienza. –

0

Potrebbe per essere utile.

$("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'); 
}); 

dovrebbe fare il trucco.

+0

Segue il collegamento quando si fa clic su di esso, ma il prompt viene comunque visualizzato. C'è un modo per sopprimere il prompt quando si fa clic sul collegamento? –

0

questo dovrebbe farlo.

<!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>