Ich versuche, einige Informationen zu reorganisieren, die durch serverseitigen Code erstellt werden. Der Server ist für Speicher reserviert, und alle Sortierung und Anzeige muss clientseitig mit javascript/jquery abgewickelt werden. Die html ist nach dem Vorbild der ...Sortierelemente basierend auf CSS-Klasse und Text funktioniert nicht
<div>
<a href="https://en.wikipedia.org" class="AccessSitesLinks true 1">Wikipedia Home</a>
<a href="https://en.wikipedia.org/wiki/Gold" class="AccessSitesLinks false 1">Wikipedia Gold</a>
<a href="https://google.com" class="AccessSitesLinks true 2">Google Home</a>
<a href="https://mail.google.com/" class="AccessSitesLinks false 2">Google Mail</a>
<a href="https://en.wikipedia.org/wiki/Mushroom" class="AccessSitesLinks false 1">Wikipedia Mushrooms</a>
<a href="https://facebook.com" class="AccessSitesLinks true 3">FaceBook Home</a>
<a href="https://facebook.org/about" class="AccessSitesLinks false 3">FaceBook About</a>
</div>
Hier meine Geige im Gang ist https://jsfiddle.net/ydc6ywuz/1/ Das übergeordnete Ziel ist AccessSitesLinks true
zu sortieren die Wurzel-Sites zu sein. Das bedeutet, dass eine CSS-Klasse, die false
ist, an die Root-Site basierend auf der Nummer nach false
angefügt werden sollte. Das beste Beispiel ist Wikipedia Home ist true
und 1
, Websites wie Pilze und Gold wäre false
und 1
.
Dies ist nicht, wo mein Problem ist. Wenn ich diesen Javascript-Code ausführe. Die Sortierung funktioniert perfekt. aber die href-Werte bleiben gleich. Obwohl sie im Abschnitt "Console.log" korrekt sind.
function setFields() {
var sortSite = $('.AccessSitesLinks.true');
var arr = sortSite.map(function(_, o) {
return {
t: $(o).text(),
h: $(o).attr('href'),
c: $(o).attr('class')
};
}).get();
arr.sort(function(o1, o2) {
return o1.t > o2.t ? 1 : o1.t <o2.t ? -1: 0;
});
sortSite.each(function(i, o) {
console.log(i);
$(o).text(arr[i].t);
$(o).attr(arr[i].h);
$(o).attr(arr[i].c);
console.log(arr[i].h);
console.log(arr[i].c);
});
Edit: Ich habe versucht, zu tun, aber diese Uncaught Reference hat nicht funktioniert: Seite ungültig lef-Hand in Zuordnung
Es ist möglich, Sie können den HTML in irgendeiner Weise ändern? Dies wäre viel einfacher, wenn Sie anstelle von Klassen 'data-*' Attribute zum Organisieren der Elemente verwenden. –
Wenn Sie * die Attribute in der '.each()' - Schleife * setzen, müssen Sie sowohl den Attributnamen als auch den Wert angeben. – Pointy
Was passiert, wenn Sie console.log (o)? –