简体   繁体   中英

How can pass a value of data-attribute to another data-attribute

I am trying to pass the value of data-megamenu in the data-target of the same element in order to create a bootstrap 4 accordion menu. I tried the script below but always returns the value of the last element.

Thank you in advance

HTML

<ul class="level2">
    <div class="categories">
        <li class="menu" data-megamenu="cat1" data-target="#cat8" data-toggle="collapse">
            <a href="#">
                <span class="icon icon-eikona_ixos"></span>
                <span class="text">Category1</span>
            </a>
        </li>
        <div class="megamenu" id="cat1"></div>
    </div>

    <div class="categories">
        <li class="menu" data-megamenu="cat2" data-target="#cat8" data-toggle="collapse">
            <a href="#">
                <span class="icon icon-eikona_ixos"></span>
                <span class="text">Category2</span>
            </a>
        </li>
        <div class="megamenu" id="cat2"></div>
    </div>

    <div class="categories">
        <li class="menu" data-megamenu="cat3" data-target="#cat8" data-toggle="collapse">
            <a href="#">
                <span class="icon icon-eikona_ixos"></span>
                <span class="text">Category3</span>
            </a>
        </li>
        <div class="megamenu" id="cat3"></div>
    </div>

    <div class="categories">
        <li class="menu" data-megamenu="cat4" data-target="#cat8" data-toggle="collapse">
            <a href="#">
                <span class="icon icon-eikona_ixos"></span>
                <span class="text">Category4</span>
            </a>
        </li>
        <div class="megamenu" id="cat4"></div>
    </div>


</ul>

JQUERY

$(function () {
  var li1 = $(".categories .menu");

  $.each(li1, function (index, element) {
    var li1Value = $(this).attr("data-megamenu");
    console.log(li1Value);
    li1.attr("data-target", "#" + li1Value);
    li1.attr("data-toggle", "collapse");
  });
});

Try like below

$(function () {
  var li1 = $(".categories .menu");

  $.each(li1, function (index, element) {
    var li1Value = $(this).attr("data-megamenu");
    console.log(li1Value);
    //li1.attr("data-target", "#" + li1Value);
    $(this).attr('data-target', li1Value);
    li1.attr("data-toggle", "collapse");
  });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM