Removendo atributos de dados do HTML usando jQuery
Parece que não consigo fazer isso funcionar ...
Eu tenho uma página que esconde certos links. Quando o DOM é carregado, estou usando o jQuery para alternar alguns desses elementos. Isso é impulsionado pelo uso de um atributo de dados da seguinte forma:
<div class="d_btn" data-usr='48'>
<div class="hidden_button">
Então eu tenho o código:
$.each($(".d_btn"), function() {
var btn = $(this).data('usr');
if ( btn == '48' ){
$(this).children('.hidden_button').toggle();
}
O acima de tudo funciona como planejado. O problema é que eu estou tentando remover o data-usr da classe .d_btn uma vez que a instrução if é avaliada. Eu tentei o seguinte e nada funciona (ou seja, depois que a página é carregada, a fonte ainda mostra o atributo data-usr:
$(this).removeAttr("data-usr");
$(this).removeData("usr");
Eu tenho trabalhado nisso por algumas horas agora e ... nada! Ajuda é muito apreciada!
ATUALIZAR
Eu tentei as ótimas sugestões de configurar o atributo de dados para uma string vazia, mas ainda não obtive o resultado desejado.
Para explicar um pouco mais, a razão pela qual eu estou tentando remover o atributo é quando uma resposta ajax adiciona outro item à página, os itens previamente adicionados já teriam o botão mostrado ou oculto. Após a resposta AJAX, eu estou chamando a mesma função, uma vez que o DOM é carregado.
Atualmente, quando algo é adicionado via AJAX, ele alterna todos os botões (mostrando os que estavam ocultos e vice-versa).
Eu também estou totalmente disposto a tentar alternativas para a minha abordagem. Obrigado!
ATUALIZAR
Bem, a lâmpada acabou de piscar e eu sou capaz de fazer o que eu quero fazer apenas usando .show () em vez de .toggle ()
De qualquer forma, eu ainda gostaria de encontrar uma resposta para esta pergunta porque a página estará potencialmente verificando centenas de itens sempre que algo for adicionado - isso parece terrivelmente ineficiente (mesmo para um computador, hahaha).