Eu preciso alterar a identificação de um elemento usando jQuery.
Aparentemente, estes não funcionam:
jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"
Descobri que posso fazer isso acontecer com o seguinte código:
jQuery(this).prev("li")show(function() {
this.id="newid";
});
Mas isso não parece certo para mim. Deve haver uma maneira melhor, não? Além disso, caso não exista, que outro método posso usar em vez de mostrar / ocultar ou outros efeitos? Obviamente, não quero mostrar / ocultar ou afetar o elemento todas as vezes, apenas para alterar seu ID.
(Sim, eu sou um novato em jQuery.)
Editar
Não posso usar classes neste caso, devo usar IDs.
javascript
jquery
yoavf
fonte
fonte
foo = 1
), um membro de um objeto (foo.bar = 2
oufoo['bar'] = 2
) ou um subscrito de matriz (foo[0] = 3
), mas atribuir a uma expressão, como o resultado de um operador ((x + b) = 5
) ou o resultado de uma chamada de função (foo() = 1
,foo(x).bar(y) = 7
) não faz sentido, por isso definitivamente não será da maneira que as coisas funcionam no jQuery ou em qualquer outra biblioteca JavaScript.Respostas:
Sua sintaxe está incorreta, você deve passar o valor como o segundo parâmetro:
fonte
.prop( ... )
vez de.attr( ... )
?id
ainda deve ser definido usandoattr(...)
Uma OPÇÃO PREFERIDA acima
.attr
é usar da seguinte.prop
maneira:.attr
recupera o atributo do elemento, enquanto.prop
recupera a propriedade que o atributo faz referência (ou seja, o que você realmente pretende modificar)fonte
.prop()
método fornece uma maneira de recuperar explicitamente os valores das propriedades, enquanto.attr()
recupera os atributos."O que você pretende fazer é:
Isso definirá o ID para o novo ID
fonte
Eu fiz algo semelhante com essa construção
fonte
Não sei ao certo qual é seu objetivo, mas seria melhor usar o addClass? Quero dizer que um ID de objetos na minha opinião deve ser estático e específico para esse objeto. Se você está apenas tentando alterar a exibição na página ou algo parecido, eu colocaria esses detalhes em uma classe e os adicionaria ao objeto em vez de tentar alterar seu ID. Mais uma vez, estou dizendo isso sem entender seu objetivo sublinhado.
fonte
fonte
Isso poderia ser feito para todos os fins. Basta adicionar antes da tag de fechamento do corpo e não adicionar Jquery.min.js
fonte
A resposta de Eran é boa, mas eu acrescentaria isso. Você precisa observar qualquer interatividade que não esteja alinhada com o objeto (ou seja, se um evento onclick chamar uma função, ainda o fará), mas se houver alguma manipulação de evento javascript ou jQuery anexada a esse ID, ela será basicamente abandonada :
Se o ID agora for alterado para # myID123, a função anexada acima não funcionará mais corretamente com a minha experiência.
fonte