2021.03.05

jQuery

jQueryのremoveAttrメソッド・removeDataメソッドで要素の属性を削除

デモページはこちら

jQueryのremoveAttrメソッドとremoveDataメソッドで要素の属性を削除します。removeDataメソッドはカスタムデータ属性のみ削除できます。removeAttrメソッドとremoveDataメソッドは機能が似ていますが細かい部分で異なります。

以下のhtmlの構造でテストします。

<ul>
	<li data-name="html_css" data-num="01">HTML・CSS</li>
	<li data-name="sass" data-num="02">Sass</li>
</ul>
<p class="title">最初の要素のdata-name属性を削除</p>
<input type="button" class="btn01" value="removeAttr">
<input type="button" class="btn02" value="removeData"><br><br>
<p class="title">最初の要素のdata-name属性を取得</p>
<input type="button" class="btn03" value="attr">
<input type="button" class="btn04" value="data"><br><br>
<p class="title">2番目の要素のdata-name属性に空の値を設定</p>
<input type="button" class="btn05" value="attr">
<input type="button" class="btn06" value="data"><br><br>
<p class="title">2番目の要素のdata-name属性を取得</p>
<input type="button" class="btn07" value="attr">
<input type="button" class="btn08" value="data"><br><br>
<input type="button" class="btn09" value="リロードしてリセット">

まずremoveAttrメソッドで最初の要素のdata-name属性を削除します。removeAttrメソッドを実行するとソース上から属性と属性値が削除されます。attrメソッドとdataメソッドでdata-name属性を取得すると、どちらも結果はundefinedになります。ただしカスタムデータ属性がキャッシュされている場合は削除できません。

次にremoveDataメソッドで最初の要素のdata-name属性を削除します。removeDataメソッドを実行してもソース上から属性と属性値は削除されず、キャッシュされているカスタムデータ属性が削除されます。ですがソース上にカスタムデータ属性が記述されていてる場合は削除されません。そのためattrメソッドとdataメソッドでdata-name属性を取得すると、どちらも属性値が取得できます。

次にremoveAttrメソッドとremoveDataメソッドを続けて実行して、最初の要素のdata-name属性を削除します。attrメソッドとdataメソッドでdata-name属性を取得すると、どちらも結果はundefinedになります。これでキャッシュされているカスタムデータ属性も含め、完全に属性が削除できています。

removeAttrメソッドとremoveDataメソッド両方を実行するのではなく、attrメソッドまたはdataメソッドで2番目の要素のdata-name属性に空の値を設定します。attrメソッドまたはdataメソッドでdata-name属性を取得すると、それぞれで設定した空の値が取得できます。属性値を削除する場合この方法が簡単です。

$(function() {
	$('.btn01').on('click', function() {
		var result01 = $('ul').children('li:first');
		$(result01).removeAttr('data-name');
	});
	$('.btn02').on('click', function() {
		var result02 = $('ul').children('li:first');
		$(result02).removeData('name');
	});
	$('.btn03').on('click', function() {
		var result03 = $('ul').children('li:first');
		console.log($(result03).attr('data-name'));
	});
	$('.btn04').on('click', function() {
		var result04 = $('ul').children('li:first');
		console.log($(result04).data('name'));
	});
	$('.btn05').on('click', function() {
		var result05 = $('ul').children('li:nth-child(2)');
		$(result05).attr('data-name', '');
	});
	$('.btn06').on('click', function() {
		var result06 = $('ul').children('li:nth-child(2)');
		$(result06).data('name', '');
	});
	$('.btn07').on('click', function() {
		var result07 = $('ul').children('li:nth-child(2)');
		console.log($(result07).attr('data-name'));
	});
	$('.btn08').on('click', function() {
		var result08 = $('ul').children('li:nth-child(2)');
		console.log($(result08).data('name'));
	});
	$('.btn09').on('click', function() {
		location.reload();
	});
});

関連記事

2020.09.13

jQuery

jQueryのDeferredオブジェクトを利用した同期処理

デモページはこちら svgロードアニメーションをフェードアウトする処理を、jQueryのDeferredオブジェクトを利用して同期処理(非同期処理を待つ処理)で…

2020.10.19

jQuery

jQueryのイベントオブジェクトのメソッド(preventDefault・stopPropagation)

デモページはこちら jQueryのイベントオブジェクトのメソッドであるpreventDefaultとstopPropagationの動作をテストします。また、処…

2020.10.10

jQuery

jQueryで要素を表示・非表示(show・hide・toggle・fadeIn・fadeOut・fadeToggle・slideDown・slideUp・slideToggle)

デモページはこちら jQueryで要素を表示・非表示にするメソッドのまとめです。対象要素を表示するshow、対象要素を非表示にするhide、対象要素の表示・非表…

2020.09.06

jQuery

jQueryプラグイン drawer.jsの使い方

デモページはこちら ハンバーガーメニューが実装できるjQueryプラグイン、drawer.jsの使い方です。使用にはjQuery以外にdrawer.css、is…

2020.09.22

jQuery

jQueryで子孫要素を取得(children・find)

デモページはこちら jQueryで子孫要素(子要素と子要素の子要素である孫要素)を取得するメソッドのまとめです。対象要素の子要素を全て取得するchildren、…

上に戻る