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();
	});
});

関連記事

2021.01.04

jQuery

トップへ戻るボタンをフッターの上部に表示

デモページはこちら jQueryでフッターの高さを取得し、ユーザーがページ最下部までスクロールしても、トップへ戻るボタンをフッターよりも上部に表示します。 フッ…

2020.09.06

jQuery

jQueryで発生したエラーの対処法

コンソールでjQueryのエラーが発生した場合の対処法です。エラー発生の有無はjQueryのバージョンやfull版・slim版の違いによっても異なります。1系や…

2020.10.02

jQuery

jQueryのeachメソッドの使い方

デモページはこちら jQueryのeachメソッドの使い方です。eachメソッドには関数を指定します。関数の引数として「index(インデックス番号)」と「el…

2020.09.23

jQuery

jQueryで要素の幅と高さを取得(width・innerWidth・outerWidth・height・innerHeight・outerHeight)

デモページはこちら jQueryで要素の幅と高さを取得するメソッドのまとめです。まず幅ですが、対象要素の幅を取得するwidth、対象要素のpaddingを含めた…

2020.09.13

jQuery

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

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

上に戻る