jQuery: データ属性を持つ要素を検索

Habdul Hazeez 2023年6月21日
  1. jQuery .find() メソッドを使用してデータ属性を検索する
  2. CSS 属性セレクターを使用してデータ属性を検索する
  3. .filter() メソッドを使用してデータ属性を見つける
jQuery: データ属性を持つ要素を検索

jQuery を使用してデータ属性を持つ要素を検索するには、.find() メソッド、.filter() メソッド、または CSS 属性セレクターを使用できます。 この記事では、実用的なコード例を使用して、それらすべてを使用する方法を説明します。

jQuery .find() メソッドを使用してデータ属性を検索する

jQuery では、.find() メソッドを使用すると、CSS セレクターを使用して Web ページ上の要素を検索できます。 ここで、適切な CSS セレクターを記述すれば、それを使用してデータ属性を見つけることができます。

これから、CSS セレクターに一致する要素を使用して、必要なことを行うことができます。 以下の例では、data-name=Edison を検索し、そのフォント サイズを 3em に変更しました。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>01-jQuery-find-data-attr</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
	<main>
		<ul>
			<li data-name="Edison">Thomas Edison</li>
			<li data-name="Einstein">Albert Einstein</li>
			<li data-name="Rutherford">Ernest Rutherford</li>
		</ul>
	</main>
	<script>
		$(document).ready(function() {
			$("ul").find("[data-name='Edison']").css('font-size', '3em');
		});
    </script>
</body>
</html>

出力:

jQueryのfindメソッドでdata属性の要素を探す

CSS 属性セレクターを使用してデータ属性を検索する

CSS 属性セレクターを使用してデータ属性を見つけることができます。 ただし、HTML マークアップに応じて、これを行うには 2つの方法があります。

以下の最初の例では、リスト項目にデータ属性があります。 そのため、タグセレクターと CSS 属性セレクターで構成される CSS 子孫セレクターを使用できます。

その結果、必要な要素が正確に一致し、後で CSS スタイルを適用できます。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>02-jQuery-find-data-attr</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
	<style>
		body {
			font-family: "Trebuchet MS", Verdana, sans-serif;
			font-size: 1.2em;
		}
	</style>
</head>
<body>
	<main>
		<ul>
			<li data-iso="MRT">Mauritania</li>
			<li data-iso="LUX">Luxembourg</li>
			<li data-iso="HRV">Croatia</li>
		</ul>
	</main>
	<script>
		$(document).ready(function() {
			$("ul [data-iso='MRT'").css('color', 'magenta');
		});
    </script>
</body>
</html>

出力:

CSS 属性セレクターを使用して属性別にデータを検索

以下の 2 番目の例には、別の HTML と jQuery コードがあります。 まず、親の <ul> 要素は HTML で data 属性を持ちます。

これは、最後の例の前のセレクターが機能しないことを意味します。 これを解決するには、<ul> 要素と CSS 属性セレクターの間のスペースを削除します。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>02_01-jQuery-find-data-attr</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
	<main>
		<ul data-viruses="computer-viruses">
			<li>Mydoom</li>
			<li>ILOVEYOU</li>
			<li>WannaCry</li>
		</ul>
	</main>
	<script>
		$(document).ready(function() {
			$("ul[data-viruses='computer-viruses']").css('font-style', 'italic');
		});
    </script>
</body>
</html>

出力:

CSS 属性を使用して属性でデータを検索

.filter() メソッドを使用してデータ属性を見つける

.filter() メソッドは、CSS セレクターを使用して HTML 要素を照合します。 これにより、要素の CSS セレクターを渡し、結果を操作できます。

それが、以下のコード例で行ったことです。 前の例とは異なり、jQuery .addClass() メソッドを使用して CSS クラスを追加します。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>03-jQuery-find-data-attr</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
	<style>
		.style-chef {
			background-color: #1a1a1a;
			color: #ffffff;
			padding: 0.2em;
			width: 40%;
		}
	</style>
</head>
<body>
	<main>
		<ul>
			<li data-esolang="Befunge">Befunge</li>
			<li data-esolang="Chef">Chef</li>
			<li data-esolang="Whitespace">Whitespace</li>
		</ul>
	</main>
	<script>
		$(document).ready(function() {
			$("li").filter('[data-esolang="Chef"]').addClass('style-chef');
		});
    </script>
</body>
</html>

出力:

jQuery フィルター メソッドを使用して属性でデータを検索

著者: Habdul Hazeez
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn