Qrara
@Qrara (Qrara)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

クリックしたらその要素が「何番目の子要素」かを表示したい

解決したいこと

「JavaScript/JQuery」 クリックしたらその要素が「何番目の子要素」かを表示したい。さらに最初の要素を0ではなく1と表示させたい。

例)
ただいまJavaScriptの勉強をしているのですが、いくらネットで調べても分からなかったので質問させてください。

該当するソースコード

<body>
  <div>...</div>
  <div>...</div>
  <div id="jsi-q7">
    <dl class="u-mbm lists">
      <dt>Q7_dt_1</dt>
      <dd>Q7_dd_1</dd>
    </dl>
    <dl class="u-mbm lists">
      <dt>Q7_dt_2</dt>
      <dd>Q7_dd_2</dd>
    </dl>
    <dl class="u-mbm lists">
      <dt>Q7_dt_3</dt>
      <dd>Q7_dd_3</dd>
    </dl>
    <dl class="u-mbm lists">
      <dt>Q7_dt_4</dt>
      <dd>Q7_dd_</dd>
    </dl>
    <dl class="u-mbm lists">
      <dt>Q7_dt_5</dt>
      <dd>Q7_dd_5</dd>
    </dl>
  </div>

<script defer>
window.addEventListener( 'load', function(){

    $("#jsi-q7").find("dl").on('click', function() {
    let targetNum = $(this).closest("dl").index();

    console.log(targetNum);
    alert(targetNum);
  });

}, false);
</script>
</body>

自分で試したこと

closestを使って最初の要素を0ではなく1と表示させるらしいのですが、
closestは直近の親要素を取得するらしいので、.closest("dl")この()内を色々変えて試してみたのですが上手くいきません。
id="jsi-q7"の位置がおかしいかと思い、< dl>に移動させてみましたが上手くいきません。

ご回答の程宜しくお願い致します。

0

1Answer

現状で何番目(0始まり)の dl がクリックされたかが取れているのですから1を足すだけでいいのでは。

let targetNum = $(this).closest("dl").index() + 1;
0Like

Comments

  1. @Qrara

    Questioner

    できました!!
    こんな方法があることを知りませんでした。まだまだ勉強不足です。。
    無事解決しました。ありがとうございました!!

Your answer might help someone💌