2012-04-02 8 views
2

Ich bin mit einem seltsamen jQuery-Problem konfrontiert.Letzte Änderung in jQuery attr Rückgabetyp?

Ich wurde gebeten, herauszufinden, warum eine Website kürzlich brach. Sie laden die neueste Version von jQuery von einem CDN und nutzen es großzügig, einschließlich Features wie attr. Ich habe sehr wenig Erfahrung mit jQuery; Ich habe gehört attr ist kaputt, und ich habe gesehen, dass es schlecht funktioniert, also verwende ich es nie.

Wie auch immer, dieser Code hat Dinge wie foo = $(this).attr('class').split(' ')[0] über den ganzen Ort, und all das brach kürzlich. Anscheinend attr verwendet, um eine Zeichenfolge zurückzugeben, und jetzt gibt es ein jQuery-Objekt zurück. Es ist einfach genug, Code zu ändern und zu einem etwas vernünftigeren foo = this.className.split(' ')[0] zu ändern, aber ich frage mich, ob ich das falsch mache.

Also meine Frage ist: Gibt es eine jQuery-Konfigurationseinstellung, um attr zu handeln, wie es in der vorherigen Version getan hat, und einen String zurückgeben? Wenn nicht, ist jemand anderes auf dieses Problem gestoßen? Wie bist du damit umgegangen?

+0

[ '.attr()'] (http://api.jquery.com/attr/) gibt noch eine Reihe .. –

+0

Mmmm ... funktioniert gut für mich mit den neuesten jquery 1.7.2 hier http://jsfiddle.net/elclanrs/MRCNt/ – elclanrs

+1

FYI, Bezug auf den ersten Klassennamen ist in der Regel eine schlechte Sache zu tun, auch so foo = this.className.split ('') [0] 'bittet um Ärger. Klassennamen haben keine garantierte Reihenfolge, wenn Code mit dem Hinzufügen und Entfernen beginnt. Mit jQuery ist 'hasClass()' der richtige Weg, um zu erkennen, ob eine bestimmte Klasse vorhanden ist. – jfriend00

Antwort

1

Die kurze Antwort ist nein.

Die lange Antwort (zusammen mit dies ist wahrscheinlich nicht der beste Weg, dies zu tun * danke @GGG) ist, dass dies mit der Art und Weise wie JQuery refactored.prop() zu machen verbunden ist, machen .ATTR() verhalten sich besser in Version 1.6. Ohne zu früheren Versionen zurückzukehren, können Sie JQuery nicht bitten, sein Verhalten zu ändern.

ref: http://api.jquery.com/prop/