this in that code doesn't refer to the element(s) you're setting the name on. My guess is this code is running where this refers to window, and so $(this).attr("name") returns the window name (which is usually blank), so you're setting name on all of those elements to "" + "-1", which is of course, "-1".
You can use the version of attr that accepts a callback:
$(prodElem).clone(true, true).appendTo('#orders')
.attr("name", function() {
return $(this).attr("name") + "-1";
});
There, this refers to each matching element.
Side note: If this is really the name attribute, it's reflected by the property name, so you could also do it with prop and get the reflected attribute directly in the function:
$(prodElem).clone(true, true).appendTo('#orders')
.prop("name", function() {
return this.name + "-1";
});