Im Grunde habe ich eine Tabelle zeigt ein paar Zeilen mit einer Schaltfläche zum Löschen neben ihnen. Wenn jemand auf die Schaltfläche Löschen klickt, nehme ich die ID dieser Schaltfläche, übergebe sie an ein PHP-Skript, lösche den Datensatz aus der Datenbank und blende die Zeile dann aus der Seite aus. Hier ist der Code:JQuery - Access ID von IMG an die Tabelle für PHP-Skript
$(".remove-button").live('click', function(){
var remove_ptype = encodeURIComponent($(this).attr("id"));
$.ajax({
type: "POST",
dataType : "html",
url: "script.php",
data: "id of remove button goes here",
success: function(msg){
//Do nothing
}
});
$(this).parent().parent().fadeOut(500);
});
OK, nächster Schritt. Haben Sie auch eine Schaltfläche zum Hinzufügen, die einen Dialog öffnet, der dann ein Skript verarbeitet, einige Daten zurückgibt und eine weitere Zeile für die eingegebenen Daten anfügt. Dieses Skript gibt auch eine ID für die Löschschaltfläche zurück, die dann von dem obigen Code verwendet wird. Hier ist der anhängenden Code:
$("<tr>" +
"<td>" + unescape(name) + "</td>" +
"<td width=\"250\">" + "<img src=\"" + siteurl + "/images/x-button.png\" id=\"" + name_id + "\" class=\"remove-button\" width=\"20\">"+ "</td>" +
"</tr>").appendTo("#ptypes tbody");
Also das schön so weit funktioniert. Wenn ich jetzt versuche, diese neu hinzugefügte Zeile zu löschen, ohne die Seite zu aktualisieren, wird sie zwar vom Bildschirm entfernt, aber ich kann die ID dieser neu angehängten .remove-Schaltfläche nicht mehr abrufen und an mein PHP-Skript übergeben. Ich weiß, dass es möglich ist, wie ich es zuvor in anderen Anwendungen (wie Basecamp) gesehen habe. Kann mir also bitte jemand sagen, wie ich das erreichen kann?
FYI, ich bin mit JQuerUI das Dialogfeld zu erstellen, usw.
Vielen Dank für Ihre Hilfe!
NEBEN ORIGINAL MESSAGE
OK so wurde die ID in der Tat zeigt sich nicht. Ich muss es zeigen und es funktioniert, aber ich habe immer noch ein Problem. Hier ist der Code für meine JQuery:
$("#add-type-form").dialog({
autoOpen: false,
height: 350,
width: 500,
modal: true,
buttons: {
"Add": function() {
var type_name = encodeURIComponent($('#type_name').attr('value'));
var type_id = '';
if (type_name != "") {
//Submit form
$.ajax({
type: "POST",
dataType : "html",
url: "script.php",
data: "f=1" + "& ff=2" + "MORE STUFF",
success: function(msg){
types_id = msg;
}
});
type_id = types_id;
//Append to display
$("<tr>" +
"<td>" + unescape(type_name) + "</td>" +
"<td width=\"250\">" + "<img src=\"" + siteurl + "/images/x-button.png\" id=\"" + type_id + "\" class=\"remove-type-button\" width=\"20\">"+ "</td>" +
"</tr>").appendTo("#ptypes tbody");
$(this).dialog("close");
}},
Cancel: function() {
$(this).dialog("close");
}
},
close: function() {
allFields.val("").removeClass("ui-state-error");
}
});
Das ist also ein jQueryUI diagloue, die im Grunde das Skript verarbeitet, liefert die ID, die ich möchte meinen img-Tag zuweisen. Das Problem ist, dass die Add-Taste aus irgendeinem Grund zweimal gedrückt werden muss. Wenn ich die Zeile entfernen, wo ich einen Wert meiner type_id varaible nach der Ajax-Funktion zuweisen, d.h .:
type_id = types_id;
Ich kann nicht den Typ-ID erhalten. Bleibt die Zeile dort, muss die Schaltfläche Hinzufügen zweimal angeklickt werden. Ich bin mir nicht sicher, warum das passiert. Ich bin mir sicher, dass es mein Mangel an JS-Kenntnissen ist, also suche ich Hilfe, weil ich mit der Variablendeklaration an sich nichts falsch finde.
Danke nochmal!
Dank Mixer. Ich werde es ausprobieren. Ich habe eine Löschtaste in jeder Zeile und übergebe die URL über den Ajax-Anruf, aber ich werde sehen, ob ich den Code neu anordnen kann, um etwas zu erreichen. –
Ich habe meinen Beitrag bearbeitet und eine eventuell funktionierende Lösung angehängt. Viel Glück! – Blender
Wird es ausprobieren und zurück posten. Vielen Dank! –