2016-03-28 14 views
2

JS:img Onclick nicht funktioniert

htmlStr += '<table id="summary-table">' 
     + '<col width="200"><col width="315"><col width="600"><col width="1000">' 
     + '<tr><th>Month' 
     + '&nbsp;&nbsp;&nbsp;<img id="azsort-month" src="sort.png" alt="Sort by Alphabetical Order (A to Z)" style="width:20px; height:20px;">' 
     + '</th><th>Header2</th><th>Header3/th><th>Header4</th></tr>'; 

ich beide

htmlStr += '<table id="summary-table">' 
     + '<col width="200"><col width="315"><col width="600"><col width="1000">' 
     + '<tr><th>Month' 
     + '&nbsp;&nbsp;&nbsp;<img id="azsort-month" src="sort.png" onclick="alert("test")" alt="Sort by Alphabetical Order (A to Z)" style="width:20px; height:20px;">' 
     + '</th><th>Header2</th><th>Header3/th><th>Header4</th></tr>'; 

und

$(document).ready(function() { 
     $('#azsort-month').click(function(){ 
      alert("test"); 
     }); 
    }); 

und

versucht haben
$('#azsort-month').click(function(){ 
    alert("test"); 
}); 

Die htmlStr var ist Teil einer Funktion, die eine JSON-Ausgabe als HTML-Tabelle anzeigt. es funktioniert für die gesamte Tabelle außer dem Click-Ereignis auf dieser img

+2

Blick in den Anführungszeichen: 'onclick =" alert ("test") "'. Merkst du etwas? Wie wäre es, wenn ich schreibe 'onclick =" alert ("'? Wie für die jQuery-Ansatz, siehe [Ereignisse ausgelöst durch dynamisch generierte Element werden nicht von Event-Handler erfasst] (http://stackoverflow.com/q/12829963/218196) –

+0

Sie sollten versuchen, $ ('# azsort-month') zu verwenden ('click', function() {}); – Jainil

+0

wo/wie wird dieses htmlstr in das dom vs. eingefügt, wo Sie das .ready() ausführen. Anruf? Ref: http://Stackoverflow.com/questions/6537323/jquery-function-not-binding-to-newly-added-dom-elements –

Antwort

3

Sie haben delegation Ereignis zu verwenden, wie #azsort-month img zu der Zeit existiert nicht sind Sie, dass die Event-Handler-Befestigung, so:

$(document).on('click','#azsort-month',function(){ 
    alert("test"); 
}); 
+1

Funktioniert! Auch, gut zu wissen; Vielen Dank! – faalbane

+0

@SurrealDreams: * "Die Ereignisdelegierung fügt das Ereignis allen Elementen hinzu, die mit dem Selektor im zweiten Parameter der Funktion .on() übereinstimmen." * Das ist nicht korrekt. Der Event-Handler wird diesen Elementen nicht * hinzugefügt * (dies kann nicht sein, weil diese Elemente möglicherweise noch nicht existieren!). Der Event-Handler ist nur an die Elemente gebunden, die Sie 'on' nennen (z. B.' document' im obigen Beispiel). Der Event-Handler wird jedoch nur für Elemente ausgeführt, die dem Selektor entsprechen, der an ".on" übergeben wurde, wenn das Ereignis von (ihnen) stammt. –

+0

@FelixKling OK, vergiss es dann. Kommentar gelöscht. –