2013-08-06 14 views
9

Mam tabelę, której chcę zablokować kliknięcia łącza, ponieważ potrzebuję linków do innych funkcji.jQuery onClick preventDefault

Struktura tabeli jest coś takiego:

<table> 
<tr><th>Day</th><th>Event</th> 
<tr class="DAY" id="DAY_0"><td>1-8-2013</td><td><a href="?tab=tabCalendar&dayEvent=DAY_0">Add Event</a></td></tr> 
<tr class="DAY" id="DAY_1"><td>2-8-2013</td><td><a href="?tab=tabCalendar&dayEvent=DAY_1">Add Event</a></td></tr> 
</table 

mój kod jquery, aby spróbować i blokują od odświeżania strony i pokazując identyfikator jest to

<script> 
    $("a").click(
     function(event) { 
     event.preventDefault(); 
     alert('Picked: '+ event.target.id.slice(4)); 
     } 
    ); 
    </script> 

Mam także próbowałem następujących

$(".DAY").click(function(){//to catch the class DAY.click() 

a nawet

Jednak żadna z tych funkcji nie działała.

Wersje używam są

jquery-1.9.1.js 
jquery-ui-1.10.3.custom.js 

Odpowiedz

10

najprostsze podejście:

<script> 
    $(".DAY").click(
     function(event) { 
     event.preventDefault(); 
     alert('Picked: '+ $(this).attr('id').slice(4)); 
     } 
    ); 
</script> 
6

spróbować umieścić skrypt w DOM READY

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("a").on('click',function(event) { 
      event.preventDefault(); 
      alert('Picked: '+ $(this).parent('td').parent('tr').id.slice(4)); 
     }); 
    }); 
</script> 
+0

Jaka jest różnica? –

+0

DOM READY i alert – Gautam3164

+0

, o ile skrypt został uruchomiony przed próbą kliknięcia czegoś, nie spowoduje to żadnej różnicy. jeśli skrypt uruchomi się przed istnieniem elementów w domie, to i tak błąd. –

2

Trzeba znaleźć id z closesttr z klikniętego a

Spróbuj

jQuery(function($){ 
    $("a").click(function(event) { 
     event.preventDefault(); 
     alert('Picked: '+ $(this).closest('tr').attr('id').slice(4)); 
    }); 
}); 
4

Spróbuj tego:

$(document).ready(function(){ 

    $("a").click(
     function(event) { 
     event.preventDefault(); 

      DATA = $(this).closest('tr').attr('id').slice(4); 

     alert('Picked: ' + DATA); 
     } 
    ); 

}); 

ta będzie się wybrać ID z a kliknięcia. Utworzyłem również to jako jSFiddle: http://jsfiddle.net/pAZeb/

+0

w twoim jsfiddle, działa idealnie, na mojej stronie, z czystym kopiowaniem-wklejaniem, ale nie działa. strona odświeża się i nie jest wyświetlany alert ... – ShadowFlame

+0

EDYCJA: zmienił trochę w kolejności kodu, a teraz działa. albo to, albo jakiś problem z pamięcią podręczną ... – ShadowFlame

1

Może trzeba zmodyfikować na następujące kwestie:

$("a").click(
function (event) { 
    event.preventDefault(); 
    alert('Picked: ' + $(this).closest('tr').attr('id').slice(4)); 
});