Ich versuche ein JSON-Objekt auf dem Formular zu erstellen, das an Perl übergeben werden soll. Ich habe mehrere verschachtelte div
s mit ul
s ein li
s, um eine sortierte Sortierung nach jQuery-ui zu ermöglichen.Jquery each() Fallback, wenn kein Ergebnis gefunden wurde
Um die sortierten li
s (die sich über mehrere div
s verteilt) speichern ich den folgenden Code geschrieben:
jQuery("form[name='editorview']").submit(function(event) {
event.preventDefault();
var values = '{ ';
jQuery(this).find(".div_abcd").each(function(){
values += '"'+this.id+'": [';
jQuery(this).find("div[id^='CONT']").each(function(){
values += '{"'+this.id+'": [';
jQuery(this).find("li").each(function(){
if (jQuery(this).not("class='placeholder'")){
values += '"'+this.id+'",';
} else {
values +='"placeholder",';
}
});
values = values.slice(0, -1); //removing trailing ,
values +=']},';
});
values = values.slice(0, -1); //removing trailing ,
values += '],';
});
values = values.slice(0, -1); //removing trailing ,
values += '}';
jQuery("#order").val(values);
document.editorview.submit();
});
Es gibt ein Maximum von 4 div
s mit der Klasse div_abcd
aber sie don‘ t notwendigerweise andere div
s enthalten. In diesem Fall habe ich das Problem, dass die zweiten values = values.slice(0, -1);
die Öffnung [
aus der Leitung
5.
entfernt Gibt es eine Möglichkeit, um einelse
wenn
jQuery(this).find("div[id^='CONT']").each(function(){
nicht hat nichts gefunden. Ich habe versucht,
.not()
zu verwenden, aber es hat nicht funktioniert.
Edit:
Auch wenn mein Problem gelöst ist, würde ich noch gerne wissen, ob es eine Möglichkeit zu wissen, wann ist die each() nicht durch noch einmal ausgeführt.
2. Edit:
Alles klar jetzt. Vielen Dank.
Ich denke, eine bessere Methode, um die Werte zu einem Array zu schieben wäre, dann 'Join (',')' Wenn Sie fertig sind, müssen Sie sich keine Gedanken über nachgestellte Kommas machen. Oder tue, was Felix vorschlägt: P – Mottie