Muszę zmienić identyfikator elementu za pomocą jQuery.
Najwyraźniej te nie działają:
jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"
Dowiedziałem się, że mogę to zrobić za pomocą następującego kodu:
jQuery(this).prev("li")show(function() {
this.id="newid";
});
Ale to nie wydaje mi się właściwe. Musi być lepszy sposób, nie? Ponadto, jeśli nie ma, jakiej innej metody mogę użyć zamiast pokazywać / ukrywać lub inne efekty? Oczywiście nie chcę pokazywać / ukrywać ani wpływać na element za każdym razem, aby zmienić jego identyfikator.
(Tak, jestem początkującym jQuery.)
Edytuj
W tym przypadku nie mogę używać klas, muszę używać identyfikatorów.
javascript
jquery
yoavf
źródło
źródło
foo = 1
), elementu obiektu (foo.bar = 2
lubfoo['bar'] = 2
) lub indeksu tablicy (foo[0] = 3
), ale przypisać do wyrażenia, takiego jak wynik operatora ((x + b) = 5
) lub wynik wywołania funkcji (foo() = 1
,foo(x).bar(y) = 7
) nie ma żadnego sensu, więc zdecydowanie nie będzie to działało w jQuery ani w żadnej innej bibliotece JavaScript.Odpowiedzi:
Twoja składnia jest niepoprawna, powinieneś przekazać wartość jako drugi parametr:
źródło
.prop( ... )
zamiast.attr( ... )
?id
należy nadal ustawić za pomocąattr(...)
PREFEROWANĄ OPCJĄ powyżej
.attr
należy użyć w następujący.prop
sposób:.attr
pobiera atrybutu elementu natomiast.prop
Pobiera właściwość, że odniesienia atrybutów (czyli to, czego rzeczywiście zamierza zmodyfikować)źródło
.prop()
metoda zapewnia sposób jawnego pobierania wartości właściwości, podczas gdy.attr()
pobiera atrybuty.”Masz na myśli:
To ustawi identyfikator na nowy identyfikator
źródło
Z tym konstruktem zrobiłem coś podobnego
źródło
Nie jestem pewien, jaki jest twój cel, ale czy zamiast tego lepiej byłoby użyć addClass? Mam na myśli, że identyfikator obiektu powinien moim zdaniem być statyczny i specyficzny dla tego obiektu. Jeśli po prostu próbujesz zmienić to, aby wyświetlać się na stronie lub coś w tym rodzaju, umieściłbym te szczegóły w klasie, a następnie dodałem je do obiektu, a nie próbowałem zmienić jego identyfikator. Znowu mówię to bez zrozumienia twojego podkreślającego celu.
źródło
źródło
To może zrobić wszystko. Po prostu dodaj przed tagiem zamykającym ciało i nie dodawaj Jquery.min.js
źródło
Odpowiedź Erana jest dobra, ale chciałbym do tego dołączyć. Musisz obserwować każdą interaktywność, która nie jest wbudowana w obiekt (to znaczy, jeśli zdarzenie onclick wywoła funkcję, nadal będzie działać), ale jeśli do tego identyfikatora dołączona jest obsługa zdarzeń javascript lub jQuery, zostanie ona zasadniczo porzucona :
Jeśli identyfikator zostanie teraz zmieniony na # myID123, funkcja dołączona powyżej nie będzie już działać poprawnie z mojego doświadczenia.
źródło