2016-06-22 28 views
0

Ich habe Anker-Tag in ejs dynamisch generiert.Wie kann man herausfinden, auf welches Anchor-Tag geklickt wird und wie man die ID in CanJs bekommt?

<div style="position: absolute" class="template-box"> 
    <!--<a href="#!template-detail" class="b2bdist">B2B Distributor</a>--> 
    <% for(var i = 0; i < this.length; i++) { %> 
    <a href="#!template-detail" id="<%= this[i][0].id%>"> <%= this[i][1].name %> </a> <br> 
    <% } %> 
</div> 

Die href ist für jeden Anker-Tag gleich. Nun, wenn ein Anker geklickt wird, es wird kommen in folgenden Code:

case "template-detail": 
      var template_id; 
      // here i want to get the the anchors id which is clicked 
      $("#template-detail").show(); 
      break; 

hier zu bemerken, dass meine href gleich ist und in jedem Klick wird i auf demselben Controller in canJs gehen. Wenn der href angeklickt wird, kommt er zum Routercontroller und der Routercontroller ruft diese Funktion in meinem mainAppController auf. also mein dieser ist jetzt MainAppController geändert. Also kann ich nicht this.id etwas verwenden.

Edit: Ich habe unter Code in meinem js verwendet, aber nicht ausgelöst. Es geht um den Fall, der href direkt verwendet, wegen des Router-Controllers, den ich verwende.

$('a').click(function(){ 
       console.log(this.id); 
      }) 

Wie die ID des Anker-Tag erhalten, die angeklickt wird ??

Edit:Entschuldigung an alle. Ich brauche es in CanJs.

+2

Verwendung 'this' Kontext in Click-Ereignis – guradio

+0

Veröffentlichen Sie Ihren vollständigen JS-Code für Ankerklicks. – choz

+0

Ich bin nicht mit Anker klicken nur mit href für jedes Tag in anderen js-Datei in canJs. Ich will damit umgehen? ist es möglich?? –

Antwort

0

Haben Sie und Ereignisobjekt? wenn so können Sie zugreifen event.target.id

0

Haben „name“ in der Anker-Tag-Attribut und Handler klicken haben auf der Grundlage dieses

$('a[name="uniqueid"]').click(function(){ 
    alert(this.id); 
}); 

<a href="#" name="uniqueid" id="id1">Text one</a> 
<a href="#" name="uniqueid" id="id2">Text two</a> 
<a href="#" name="uniqueid" id="id3">Text three</a> 
+0

Wenn Sie basierend auf Klick validieren möchten, haben Sie die href als "#" und diesen Click-Handler. Verteilen Sie es im Handler auf Ihren href-Wert. –

0

Sie dies durch die Verwendung JQuery tun können. Lösung ist;

$(function(){ 
 
//document ready 
 
     $('a').click(function(){ 
 
      alert($(this).attr('id')); 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" id="firstone">First Link</a> 
 
<a href="#" id="secondone">Second Link</a> 
 
<a href="#" id="thirdone">Third Link</a>

+0

Die Sache ist, dass ich einen Controller nenne, der den href in einer anderen js-Datei verwendet. Eigentlich feuert das. Nicht dieses Klickereignis in meiner js-Datei .. href feuert wegen canJs Routercontroller haben in meinem Projekt –

+0

Hast du deinen Code mit Dokument fertig gemacht? Manchmal ist es erforderlich, hängt von Ihren Plugins und Projekt ab. –

2

Fügen Sie ein Klassenattribut in allen <a>,
Beispiel HTML:

<a href="#" class="myclass" id="id1">Text one</a> 
<a href="#" class="myclass" id="id2">Text two</a> 
<a href="#" class="myclass" id="id3">Text three</a> 

Beispiel JS:

$('a.myclass').click(function(){ 
    alert($(this).attr('id')); 
});