業務で久しぶりにjQueryを使っているのですが、最近のフロントエンドJSに染まってしまったせいか、うまい具合に操作できなくて悩んでました。
ところが調べた結果、HTML5のデータ属性を使うとjQueryでも柔軟に対象を特定できることがわかったので、紹介します。
サンプルコード
実際に業務でも使っているのですが、データ属性でフィルタリングすることによって、思いのままに特定の要素だけを抽出することができます。
<script src="https://code.jquery.com/jquery-3.6.3.js" crossorigin="anonymous"></script> <script> $(function() { // かきくけこと出力される console.log( $("li").filter(function() { return $(this).data("id") === 2; }).first().html() ); // さしすせそと出力される console.log( $("li").filter(function() { return $(this).data("test") === "hoge"; }).last().html() ); // データ属性を書き換える $("li[data-test='foo']").data("test", "hoge"); // なにぬねのと出力される console.log( $("li").filter(function() { return $(this).data("test") === "hoge"; }).last().html() ); // クリックされた要素のデータ属性を出力する $("li").click(function() { console.log($(this).data("id") || $(this).data("test")) }); }); </script> <ul> <li data-id="1">あいうえお</li> <li data-id="2">かきくけこ</li> <li data-test="hoge">さしすせそ</li> <li data-test="bar">たちつてと</li> <li data-test="foo">なにぬねの</li> </ul>
- たとえば、IDが1番のbuttonがクリックされたら、IDが1番のlabelを書き換えるような使い方が可能です。
- 今まではHTMLのid属性で頑張って実現していたのですが、data属性ならidを使わなくても、対象の特定が簡単に実現できそうです。
あとがき
- HTML5を扱いこなせば、ごく普通のWEBサイトならjQueryでもまだまだ頑張れる気がしてきました。
- たとえば、WEBデザイナーと一緒に仕事するケースで、デザイナーもjQueryなら使えますパターンで役立ちそうです。