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.10.07

jQuery

jQueryのattrメソッド・dataメソッドで要素の属性を取得・変更・新規設定

デモページはこちら jQueryのattrメソッドとdataメソッドで要素の属性を取得・変更・新規設定します。dataメソッドはカスタムデータ属性のみ取得・変更…

2022.08.25

jQuery

jQueryのhasClassメソッドでclassの付与を判定

jQueryのhasClassメソッドで要素にclassが付与されているか判定します。以下のhtmlの構造で確認します。 hasClassメソッドは引数にクラス…

2021.03.14

jQuery

jQueryのcssメソッドで要素のCSSを取得・変更

デモページはこちら jQueryのcssメソッドで要素のCSSを取得・変更します。以下のhtmlの構造でテストします。 まずCSSの変更です。対象の要素に設定さ…

2020.10.15

jQuery

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

jQueryプラグイン、jquery.matchHeight.jsの使い方です。全てのページ共通で、以下のhtml構造でテストします。デモページではクラス名bo…

2021.01.30

jQuery

ヘッダー固定時のページ内リンクスムーススクロール

デモページはこちら ページ内リンクへの移動をスムーススクロールで実装します。ヘッダーは上部に固定しています。以下のhtml構造でテストします。 ページ内リンクの…

上に戻る