2010-05-19 8 views
5

Ich habe eine Liste der dynamisch generierten Schaltflächen und ID wird zur Laufzeit generiert. Wie kann ID mit JQuery geklickt werden? HierGet ID des Elements auf Knopfdruck mit jquery

ist Code js

var btn = " <input type='button' id='btnDel' value='Delete' />"; 


$("#metainfo").append(txt); //set value of 

$("#btnDel").attr("id", "btnDel" + $("#hid").attr("value")); 
+0

eine Klasse hinzufügen, wie 'generatedButton' oder was auch immer Sie an diesen dynamisch erstellten Button haben möchten, und dann können Sie die Antwort von Jan Willem B verwenden: http://stackoverflow.com/questions/2864327/get-id-of-element-on-button-click-using -jquery/2864340 # 2864340 – jigfox

+0

Warum ändern Sie die ID der Schaltfläche an erster Stelle? Ich finde das eine seltsame Sache zu tun ... – RoToRa

Antwort

23

Für Ihr Beispiel es so sein würde:

$("#btnDel").click(function() { 
    alert(this.id); 
}); 

Beachten Sie, dass Sie können den Code, den Sie haben, nicht loopen, IDs müssen eindeutig sein, Sie erhalten alle möglichen Nebenwirkungen, wenn sie nicht sind, da es sich um ungültiges HTML handelt. Wenn Sie einen Click-Handler für jede Eingabe wollte, den Wähler ändern, wie folgt aus:

$("input").click(function() { 
    alert(this.id); 
}); 
+0

Alle dynamischen Schaltflächen haben eindeutige IDs und Ihr Code funktioniert nicht. – Xulfee

+0

@Xulfee - Führen Sie es ** vor ** Sie erstellen die Schaltfläche oder nach dem Erstellen und die ID festlegen? Wenn es vorher ist, müssen Sie '.live ('click', function() {})' anstelle von '.click (function() {})' –

1
$('.generatedButton').click(function() { 
    alert(this.id); 
}); 

EDIT nachdem Sie den Code geschrieben:

var btn = 
    $("<input type='button' value='Delete' />") 
    .attr("id", "btnDel" + $("#hid").val()) 
    .click(function() { 
     alert(this.id); 
    }); 
$("body").append(btn); 
+0

Was ist .generatedButton? – Xulfee

+0

@Xulfee Dies ist ein Beispiel, wie Sie 'generatedButton' (ohne den Punkt) zum' class'-Attribut Ihrer Schaltfläche hinzufügen können, um es mit jQuery (http://api.jquery.com/class-selector/) zu finden. – jigfox

+0

Der Code, den Sie in Ihre Frage geschrieben haben, funktioniert nicht (zum Beispiel enthält die btn var nur eine Zeichenfolge mit HTML, die zu einer Schaltfläche führen würde, wenn sie von einem Browser gerendert würde, aber nicht die Schaltfläche selbst), aber ich habe diese Antwort aktualisiert in einem Versuch, dir dabei zu helfen. –

0

Sie sollten Click-Ereignis der Schaltfläche hinzufügen, nachdem Dokument bereit ist (Geladen):

$(document).ready(function(){ 
    $("#btnDel").click(function() { 
     alert('Button clicked.'); 
    }); 
}); 
+1

Bearbeiten Sie die Antwort mit Erklärung! – gsamaras