Удаление атрибутов данных из HTML с помощью jQuery

Кажется, это не помогает...

У меня есть страница, которая скрывает определенные ссылки. Когда DOM загружен, я использую jQuery для переключения некоторых из этих элементов. Это обусловлено использованием атрибута data следующим образом:

<div class="d_btn" data-usr='48'>
  <div class="hidden_button">

Тогда у меня есть код:

  $.each($(".d_btn"), function() {
     var btn = $(this).data('usr');
   if ( btn == '48' ){      
     $(this).children('.hidden_button').toggle();
   }

Все вышеперечисленное работает как и планировалось. Проблема в том, что я пытаюсь удалить data-usr из класса .d_btn после вычисления выражения if. Я пробовал следующее и ничего не работает (т.е. После загрузки страницы источник все еще показывает атрибут data-usr:

$(this).removeAttr("data-usr");

$(this).removeData("usr");

Я работаю над этим уже пару часов и... ничего! Помощь очень ценится!

UPDATE

Я пробовал отличные предложения по установке атрибута data в пустую строку, но я все еще не получаю желаемого результата.

Чтобы объяснить немного дальше, причина, по которой я пытаюсь удалить этот атрибут, заключается в том, что когда ответ ajax добавляет другой элемент на страницу, ранее добавленные элементы уже имеют кнопку, показанную или скрытую. После ответа AJAX я вызываю одну и ту же функцию после загрузки DOM.

В настоящее время, когда что-то добавляется через AJAX, он переключает все кнопки (показывающие те, которые были скрыты, и наоборот). Ugh...

Я также полностью готов попробовать альтернативы моему подходу. Спасибо!

UPDATE

Ну, лампочка просто вспыхнула, и я могу делать то, что хочу, просто используя .show() вместо .toggle()

Во всяком случае, мне все равно хотелось бы найти ответ на этот вопрос, потому что страница будет потенциально проверять сотни предметов всякий раз, когда что-то добавляется - это кажется ужасно неэффективным (даже для компьютера, хахаха.)

Ответ 1

Изменение DOM не влияет на источник. Это влияет на DOM, который вы можете просмотреть с помощью инструментов Inspector/Developer. Щелкните правой кнопкой мыши = > Просмотр источника даст вам исходный источник страницы, а не фактический текущий источник, измененный JavaScript.

Ответ 2

Почему бы вам не установить значение на случайное значение или пустую переменную, если removeAttr не работает.

$(this).attr("data-usr" , '');

$(this).prop("data-usr" , '');

Ответ 3

Установите его в пустую строку:

$(this).attr("data-usr", "");

Я второй, что сказал Колинк: проверьте DOM, а не источник. (Chrome: Ctrl + Shift + i).

Ответ 4

Как утверждали другие. При проверке источника будет отображаться исходный неотредактированный источник для веб-страницы. Что вам нужно сделать, это проверить DOM с помощью инструментов разработчика.

Я только что проверил все в инспекторе Chrome на jsfiddle здесь, и атрибут определенно удаляется, а также данные.