2013-08-06 18 views
9

Ich habe eine Tabelle, von der ich die Linkklicks unterdrücken möchte, weil ich die Links für andere Funktionalität benötige.jQuery onClick preventDefault

Die Struktur der Tabelle ist so etwas wie folgt aus:

<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 

meine jQuery-Code, um zu versuchen und blockieren die die Seite von erfrischend, und zeigt die ID das ist

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

ich auch haben folgende versucht, die

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

und sogar

$("[id^=DAY]").click(function(){//to catch the id DAY*.click 

jedoch hat keine dieser Funktionen irgendetwas getan.

Die Versionen ich verwende, sind

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

Antwort

10

Simplest Ansatz:

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

Versuchen Sie das Skript in 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

was ist der Unterschied? –

+0

DOM READY und Warnung – Gautam3164

+0

solange das Skript ausgeführt wurde, bevor Sie versuchen, auf etwas zu klicken, das macht keinen Unterschied. Wenn das Skript ausgeführt wird, bevor die Elemente im Dom existieren, würde es trotzdem einen Fehler geben. –

2

Sie die id des a

Versuchen

tr der angeklickten closest finden müssen, um setzen
jQuery(function($){ 
    $("a").click(function(event) { 
     event.preventDefault(); 
     alert('Picked: '+ $(this).closest('tr').attr('id').slice(4)); 
    }); 
}); 
4

Try this:

$(document).ready(function(){ 

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

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

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

}); 

Dies wird die ID der a Sie geklickt haben, erhalten wählen. Ich habe auch das als jSFiddle erstellt: http://jsfiddle.net/pAZeb/

+0

in Ihrem Fall, funktioniert es perfekt, in meiner Seite, eine reine Kopie-Paste, tut es nicht. Seite aktualisiert und keine Warnung wird angezeigt ... – ShadowFlame

+0

EDIT: ein bisschen in der Reihenfolge des Codes geändert, und jetzt funktioniert es. Entweder dies oder ein Problem mit dem Cache irgendeiner Art ... – ShadowFlame

1

Vielleicht müssen Sie das ändern folgende:

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