Hallo Bernd,
je nach Konstruktion deiner Tabelle ist $(".artikelstandort").change(...) sogar der falsche Weg. Wenn Du per JS Zeilen hinzufügen kannst, werden die neuen Zeilen keine change-Registrierung aufweisen.
Deswegen gibt es in jQuery ab Version 1.7 die .on Funktion. Angenommen, deine Tabelle hat ein id="artikeltabelle"
Attribut, und deine Standort-Inputs die artikelstandort-Klasse, dann könntest Du schreiben:
$("#artikeltabelle").on("change", "input.artikelstandort", function(event) {
// geänderter Standort
});
Die Registrierung des Eventhandlers erfolgt damit auf der Tabelle, nicht auf den einzelnen input-Elementen, und jQuery nutzt das Event Bubbling, um alle change-Events innerhalb der Tabelle zu behandeln. Der zweite Parameter von .on() ist ein CSS Selektor, der jQuery sagt, für welche Elemente Du auf das change-Event reagieren willst.
Übrigens, deine data-Attribute beziehen sich doch mutmaßlich auf die ganze table row, richtig? Es wäre dann nach meinem Gefühl „korrekter“, sie nicht an das input-Element zu klemmen, sondern an das tr Element. Da kommst Du mit jQuery problemlos heran:
var $row = $(this).closest("tr")
var projectId = $row.data("projektId");
var cartId = $row.data("warenkorbId");
Wenn eine dieser IDs für alle Rows gleich ist, gehört sie sogar an das table-Element. Und dann solltest Du sie während der Event-Registrierung auslesen, so dass die Variable, in der sie steht, per Closure im Eventhandler verfügbar ist. „Don't Repeat Yourself“.
Rolf
sumpsi - posui - clusi