사용자 지정 선택으로 특정 콘텐츠 표시

Nadso

내 사용자 지정 선택에이 코드를 사용하고 있습니다 :  https://www.w3schools.com/howto/howto_custom_select.asp

또한 옵션을 선택하면 특정 콘텐츠를 표시하려고합니다. 일부 "스왑 콘텐츠"자바 스크립트를 시도했지만이 사용자 지정 선택에서 작동하지 않습니다.

실제로 실제로 작동하지만 "원본"선택 요소에서만 작동하지만 디스플레이에 넣을 때 : 내 사용자 지정 선택에서만 작동하지 않습니다. 더 이상 작동하지 않습니다. 

누군가이 사용자 지정 선택 옵션으로 특정 콘텐츠를 표시하는 코드가 있다면 감사하겠습니다. 

그렇지 않으면 필요한 경우 내 테스트 코드가 있습니다.

/*Button list*/

$(document).ready(function(){
    $(".custom-select").change(function(){
        $(this).find("option:selected").each(function(){
            var optionValue = $(this).attr("value");
            if(optionValue){
                $(".liste").not("." + optionValue).hide();
                $("." + optionValue).show();
            } else{
                $(".liste").hide();
            }
        });
    }).change();
});


/*Btn Content display*/
jQuery(function(){;       
          $('.swap-button').click(function(){   
          $('.targetDiv').hide();
          $('#div'+$(this).attr('target')).show();
          $('.swap-button').removeClass("active");
          $(this).addClass("active");
          });
                   
});


/*Custom select*/

var x, i, j, l, ll, selElmnt, a, b, c;
/*look for any elements with the class "custom-select":*/
x = document.getElementsByClassName("custom-select");
l = x.length;
for (i = 0; i < l; i++) {
  selElmnt = x[i].getElementsByTagName("select")[0];
  ll = selElmnt.length;

  /*for each element, create a new DIV that will act as the selected item:*/
  a = document.createElement("DIV");
  a.setAttribute("class", "select-selected");
  a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
  x[i].appendChild(a);

  /*for each element, create a new DIV that will contain the option list:*/
  b = document.createElement("DIV");
  b.setAttribute("class", "select-items select-hide");
  for (j = 1; j < ll; j++) {

    /*for each option in the original select element,
    create a new DIV that will act as an option item:*/
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function(e) {

        /*when an item is clicked, update the original select box,
        and the selected item:*/
        var y, i, k, s, h, sl, yl;
        s = this.parentNode.parentNode.getElementsByTagName("select")[0];
        sl = s.length;
        h = this.parentNode.previousSibling;
        for (i = 0; i < sl; i++) {
          if (s.options[i].innerHTML == this.innerHTML) {
            s.selectedIndex = i;
            h.innerHTML = this.innerHTML;
            y = this.parentNode.getElementsByClassName("same-as-selected");
            yl = y.length;
            for (k = 0; k < yl; k++) {
              y[k].removeAttribute("class");
            }
            this.setAttribute("class", "same-as-selected");
            break;
          }
        }
        h.click();
    });
    b.appendChild(c);
  }
  x[i].appendChild(b);
  a.addEventListener("click", function(e) {

      /*when the select box is clicked, close any other select boxes,
      and open/close the current select box:*/
      e.stopPropagation();
      closeAllSelect(this);
      this.nextSibling.classList.toggle("select-hide");
      this.classList.toggle("select-arrow-active");
    });
}
function closeAllSelect(elmnt) {
  /*a function that will close all select boxes in the document,
  except the current select box:*/
  var x, y, i, xl, yl, arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");
  xl = x.length;
  yl = y.length;
  for (i = 0; i < yl; i++) {
    if (elmnt == y[i]) {
      arrNo.push(i)
    } else {
      y[i].classList.remove("select-arrow-active");
    }
  }
  for (i = 0; i < xl; i++) {
    if (arrNo.indexOf(i)) {
      x[i].classList.add("select-hide");
    }
  }
}
/*if the user clicks anywhere outside the select box,
then close all select boxes:*/
document.addEventListener("click", closeAllSelect);
/*Buttons list*/
.liste {
  display:none;
  margin: 15px 15px;
   }

.targetDiv {
  display:none;
  margin: 15px 15px;
   }
 
   .swap-button{
   display:inline-block;
   background:#ffff;
   cursor:pointer;
   color: #00205b;
}

.active{
   background:#00205B; 
   color: #eee;
  display:inline;
  }

/* Custom select: */

/* The container must be positioned relative: */
.custom-select {
  position: relative;
  font-family: Arial;
}

.custom-select select {
  display: ; /*hide original SELECT element: */
}

.select-selected {
  background-color: DodgerBlue;
  width: 50px;
  margin: 10px;
}

/* Style the arrow inside the select element: */
.select-selected:after {
  position: absolute;
  content: "";
  top: 14px;
  right: 10px;
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-color: #fff transparent transparent transparent;
}

/* Point the arrow upwards when the select box is open (active): */
.select-selected.select-arrow-active:after {
  border-color: transparent transparent #fff transparent;
  top: 7px;
}

/* style the items (options), including the selected item: */
.select-items div,.select-selected {
  color: #ffffff;
 padding: 8px 5px;
  border: 1px solid transparent;
  border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
  cursor: pointer;
    width: 150px;

}

/* Style items (options): */
.select-items {
  position: absolute;
  padding: 8px 5px;
  background-color: DodgerBlue;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99;
    width: 150px;
  margin: 10px ;
}

/* Hide the items when the select box is closed: */
.select-hide {
  display: none;
}

.select-items div:hover, .same-as-selected {
  background-color: rgba(0, 0, 0, 0.1);

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="custom-select">

  <select>
    <option value="">Select</option>
    <option value="orange">Orange</option>
    <option value="lemon">Lemon</option>
    <option value="apple">Apple</option>
  </select>
</div>

<div>

  <div class="liste orange">
    <button class="swap-button" target="1">orange btn1</button>
    <button class="swap-button" target="2">orange btn2</button>
    <button class="swap-button" target="3">orange btn3</button>
  </div>

  <div class="liste lemon">
    <button class="swap-button" target="4">lemon btn1</button>
    <button class="swap-button" target="5">lemon btn2</button>
    <button class="swap-button" target="6">lemon btn3</button>
  </div>

  <div class="liste apple">
    <button class="swap-button" target="7">apple btn1</button>
    <button class="swap-button" target="8">apple btn2</button>
    <button class="swap-button" target="9">apple btn3</button>
  </div>
</div>

<div id="contentarea">
  <section>
    <div id="div1" class="targetDiv">orange btn1 content</div>
    <div id="div2" class="targetDiv">orange btn2 content</div>
    <div id="div3" class="targetDiv">orange btn3 content</div>
  </section>

  <section>
    <div id="div4" class="targetDiv">lemon btn1 content</div>
    <div id="div5" class="targetDiv">lemon btn2 content</div>
    <div id="div6" class="targetDiv">lemon btn3 content</div>
  </section>

  <section>
    <div id="div7" class="targetDiv">apple btn1 content</div>
    <div id="div8" class="targetDiv">apple btn2 content</div>
    <div id="div9" class="targetDiv">apple btn3 content</div>
  </section>
</div>

감사

gpl

이 스 니펫을 확인하십시오.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <!-- JQuery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <style type="text/css">
        /*Buttons list*/
        .liste {
            display:none;
            margin: 15px 15px;
        }

        .targetDiv {
            display:none;
            margin: 15px 15px;
        }

        .swap-button{
            display:inline-block;
            background:#ffff;
            cursor:pointer;
            color: #00205b;
        }

        .active{
            background:#00205B; 
            color: #eee;
            display:inline;
        }

        /* Custom select: */

        /* The container must be positioned relative: */
        .custom-select {
            position: relative;
            font-family: Arial;
        }

        .custom-select select {
            display: ; /*hide original SELECT element: */
        }

        .select-selected {
            background-color: DodgerBlue;
            width: 50px;
            margin: 10px;
        }

        /* Style the arrow inside the select element: */
        .select-selected:after {
            position: absolute;
            content: "";
            top: 14px;
            right: 10px;
            width: 0;
            height: 0;
            border: 6px solid transparent;
            border-color: #fff transparent transparent transparent;
        }

        /* Point the arrow upwards when the select box is open (active): */
        .select-selected.select-arrow-active:after {
            border-color: transparent transparent #fff transparent;
            top: 7px;
        }

        /* style the items (options), including the selected item: */
        .select-items div,.select-selected {
            color: #ffffff;
            padding: 8px 5px;
            border: 1px solid transparent;
            border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
            cursor: pointer;
            width: 150px;

        }

        /* Style items (options): */
        .select-items {
            position: absolute;
            padding: 8px 5px;
            background-color: DodgerBlue;
            top: 100%;
            left: 0;
            right: 0;
            z-index: 99;
            width: 150px;
            margin: 10px ;
        }

        /* Hide the items when the select box is closed: */
        .select-hide {
            display: none;
        }

        .select-items div:hover, .same-as-selected {
            background-color: rgba(0, 0, 0, 0.1);

        }
    </style>

</head>
<body>
    <div class="custom-select">

        <select>
            <option value="">Select</option>
            <option value="orange">Orange</option>
            <option value="lemon">Lemon</option>
            <option value="apple">Apple</option>
        </select>
    </div>

    <div>

        <div class="liste orange">
            <button class="swap-button" target="1">orange btn1</button>
            <button class="swap-button" target="2">orange btn2</button>
            <button class="swap-button" target="3">orange btn3</button>
        </div>

        <div class="liste lemon">
            <button class="swap-button" target="4">lemon btn1</button>
            <button class="swap-button" target="5">lemon btn2</button>
            <button class="swap-button" target="6">lemon btn3</button>
        </div>

        <div class="liste apple">
            <button class="swap-button" target="7">apple btn1</button>
            <button class="swap-button" target="8">apple btn2</button>
            <button class="swap-button" target="9">apple btn3</button>
        </div>
    </div>

    <div id="contentarea">
        <section>
            <div id="div1" class="targetDiv">orange btn1 content</div>
            <div id="div2" class="targetDiv">orange btn2 content</div>
            <div id="div3" class="targetDiv">orange btn3 content</div>
        </section>

        <section>
            <div id="div4" class="targetDiv">lemon btn1 content</div>
            <div id="div5" class="targetDiv">lemon btn2 content</div>
            <div id="div6" class="targetDiv">lemon btn3 content</div>
        </section>

        <section>
            <div id="div7" class="targetDiv">apple btn1 content</div>
            <div id="div8" class="targetDiv">apple btn2 content</div>
            <div id="div9" class="targetDiv">apple btn3 content</div>
        </section>
    </div>

    <script type="text/javascript">
        function func(select){
            $(select).find("option:selected").each(function(){
                var optionValue = $(this).attr("value");
                if(optionValue){
                    $(".liste").not("." + optionValue).hide();
                    $("." + optionValue).show();
                } else{
                    $(".liste").hide();
                }
            });
        }

        /*Button list*/
        $(document).ready(function(){
            $(".custom-select").change(function(){
                func(this);
            }).change();
        });



        /*Btn Content display*/
        jQuery(function(){;       
            $('.swap-button').click(function(){   
                $('.targetDiv').hide();
                $('#div'+$(this).attr('target')).show();
                $('.swap-button').removeClass("active");
                $(this).addClass("active");
            });
            
        });


        /*Custom select*/

        var x, i, j, l, ll, selElmnt, a, b, c;
        /*look for any elements with the class "custom-select":*/
        x = document.getElementsByClassName("custom-select");
        l = x.length;
        for (i = 0; i < l; i++) {
            selElmnt = x[i].getElementsByTagName("select")[0];
            ll = selElmnt.length;

            /*for each element, create a new DIV that will act as the selected item:*/
            a = document.createElement("DIV");
            a.setAttribute("class", "select-selected");
            a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
            x[i].appendChild(a);

            /*for each element, create a new DIV that will contain the option list:*/
            b = document.createElement("DIV");
            b.setAttribute("class", "select-items select-hide");
            for (j = 1; j < ll; j++) {

    /*for each option in the original select element,
    create a new DIV that will act as an option item:*/
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function(e) {

        /*when an item is clicked, update the original select box,
        and the selected item:*/
        var y, i, k, s, h, sl, yl;
        s = this.parentNode.parentNode.getElementsByTagName("select")[0];
        sl = s.length;
        h = this.parentNode.previousSibling;
        for (i = 0; i < sl; i++) {
            if (s.options[i].innerHTML == this.innerHTML) {
                s.selectedIndex = i;
                h.innerHTML = this.innerHTML;
                y = this.parentNode.getElementsByClassName("same-as-selected");
                yl = y.length;
                for (k = 0; k < yl; k++) {
                    y[k].removeAttribute("class");
                }
                this.setAttribute("class", "same-as-selected");
                break;
            }
        }
        func(s);
        h.click();
    });
    b.appendChild(c);
}
x[i].appendChild(b);
a.addEventListener("click", function(e) {

      /*when the select box is clicked, close any other select boxes,
      and open/close the current select box:*/
      e.stopPropagation();
      closeAllSelect(this);
      this.nextSibling.classList.toggle("select-hide");
      this.classList.toggle("select-arrow-active");
  });
}
function closeAllSelect(elmnt) {
  /*a function that will close all select boxes in the document,
  except the current select box:*/
  var x, y, i, xl, yl, arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");
  xl = x.length;
  yl = y.length;
  for (i = 0; i < yl; i++) {
    if (elmnt == y[i]) {
        arrNo.push(i)
    } else {
        y[i].classList.remove("select-arrow-active");
    }
  }
  for (i = 0; i < xl; i++) {
    if (arrNo.indexOf(i)) {
        x[i].classList.add("select-hide");
    }
  }
}
/*if the user clicks anywhere outside the select box,
then close all select boxes:*/
document.addEventListener("click", closeAllSelect);
</script>
</body>
</html>

$(".custom-select").change()기능이 function으로 이동되었습니다 func(select). 여기서 select는 HTML <select>태그에 대한 참조 입니다. 이것은 코드 복제를 방지합니다.

s는 select 요소를 참조하므로 내부 에서 s를 인수로 사용하여 c.addEventListener("click", function(e)새로 생성 된 함수 func(s)호출했습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Sensenet 콘텐츠 선택기 사용자 지정

분류에서Dev

UIActivityController에서 선택한 항목을 기반으로 공유 콘텐츠 사용자 지정

분류에서Dev

Magnolia CMS에서 로그인 한 사용자에게 페이지의 특정 콘텐츠 부분을 표시하는 방법

분류에서Dev

UIWebView 콘텐츠 너비를 사용자 지정 크기로

분류에서Dev

WooCommerce 콘텐츠 위젯에서 제품 제목 바로 뒤에 ACF 사용자 정의 필드 표시

분류에서Dev

작성자, 콘텐츠 및 메시지를 고정한 사용자를 얻으려고하십니까?

분류에서Dev

Selenium을 사용하여 특정 콘텐츠가있는 앵커 선택

분류에서Dev

페이지에 최신 사용자 지정 게시물 유형의 콘텐츠 표시

분류에서Dev

Wordpress : 일반 게시물 내에 사용자 지정 게시물 유형의 콘텐츠 표시

분류에서Dev

Android :-사용자 정의 된 ListView를 사용하여 콘텐츠가 표시되지 않습니다.

분류에서Dev

Orchard 사이트 레시피에 사용자 지정 콘텐츠 항목 추가

분류에서Dev

특정 페이지에있는 경우 콘텐츠 표시

분류에서Dev

필드 콘텐츠에 대한 특정 이미지 표시

분류에서Dev

사용자 지정 페이지 콘텐츠가 밴드 타일에 표시되지 않는 문제가 있음

분류에서Dev

콘텐츠로드시 특정 div에 위치

분류에서Dev

Swift 5 및 Storyboard UITableViewDelegate가 사용자 지정 또는 기타 스타일 콘텐츠를 표시하지 않음

분류에서Dev

Joomla 2.5 콘텐츠 플러그인 사용자 지정 양식이 표시되지 않음

분류에서Dev

페이지 콘텐츠를 표시하는 WooCommerce 단일 제품 사용자 지정 탭

분류에서Dev

ServiceStack Razor 콘텐츠 페이지에 대한 사용자 지정 경로

분류에서Dev

선택한 셀이있는 Excel 시트에서 특정 콘텐츠 삭제

분류에서Dev

Wordpress에서 선택한 사용자 지정 분류를 기반으로 사용자 지정 게시물 표시

분류에서Dev

콘텐츠 우선 순위 지정 및 특정 요소로드

분류에서Dev

WooCommerce 사용자 지정 제품 페이지에 조건부로 사용자 지정 콘텐츠 추가

분류에서Dev

사용자가 사용하는 링크에 따라 페이지에 특정 콘텐츠를 표시하려면 어떻게해야합니까?

분류에서Dev

TinyMCE 사용자 정의 콘텐츠 CSS

분류에서Dev

Python : 사용자 지정 콘텐츠, 위젯 및 이벤트 루프없이 큰 창을 표시하는 방법

분류에서Dev

페이지 제목이 특정 제목과 같으면 NopCommerce에 콘텐츠 표시

분류에서Dev

특정 역할 사용자가있는 사용자 만 콘텐츠에 로그인하는 방법

분류에서Dev

Bootstrap 사용자 정의 테마로 WordPress 콘텐츠가 응답하지 않음

Related 관련 기사

  1. 1

    Sensenet 콘텐츠 선택기 사용자 지정

  2. 2

    UIActivityController에서 선택한 항목을 기반으로 공유 콘텐츠 사용자 지정

  3. 3

    Magnolia CMS에서 로그인 한 사용자에게 페이지의 특정 콘텐츠 부분을 표시하는 방법

  4. 4

    UIWebView 콘텐츠 너비를 사용자 지정 크기로

  5. 5

    WooCommerce 콘텐츠 위젯에서 제품 제목 바로 뒤에 ACF 사용자 정의 필드 표시

  6. 6

    작성자, 콘텐츠 및 메시지를 고정한 사용자를 얻으려고하십니까?

  7. 7

    Selenium을 사용하여 특정 콘텐츠가있는 앵커 선택

  8. 8

    페이지에 최신 사용자 지정 게시물 유형의 콘텐츠 표시

  9. 9

    Wordpress : 일반 게시물 내에 사용자 지정 게시물 유형의 콘텐츠 표시

  10. 10

    Android :-사용자 정의 된 ListView를 사용하여 콘텐츠가 표시되지 않습니다.

  11. 11

    Orchard 사이트 레시피에 사용자 지정 콘텐츠 항목 추가

  12. 12

    특정 페이지에있는 경우 콘텐츠 표시

  13. 13

    필드 콘텐츠에 대한 특정 이미지 표시

  14. 14

    사용자 지정 페이지 콘텐츠가 밴드 타일에 표시되지 않는 문제가 있음

  15. 15

    콘텐츠로드시 특정 div에 위치

  16. 16

    Swift 5 및 Storyboard UITableViewDelegate가 사용자 지정 또는 기타 스타일 콘텐츠를 표시하지 않음

  17. 17

    Joomla 2.5 콘텐츠 플러그인 사용자 지정 양식이 표시되지 않음

  18. 18

    페이지 콘텐츠를 표시하는 WooCommerce 단일 제품 사용자 지정 탭

  19. 19

    ServiceStack Razor 콘텐츠 페이지에 대한 사용자 지정 경로

  20. 20

    선택한 셀이있는 Excel 시트에서 특정 콘텐츠 삭제

  21. 21

    Wordpress에서 선택한 사용자 지정 분류를 기반으로 사용자 지정 게시물 표시

  22. 22

    콘텐츠 우선 순위 지정 및 특정 요소로드

  23. 23

    WooCommerce 사용자 지정 제품 페이지에 조건부로 사용자 지정 콘텐츠 추가

  24. 24

    사용자가 사용하는 링크에 따라 페이지에 특정 콘텐츠를 표시하려면 어떻게해야합니까?

  25. 25

    TinyMCE 사용자 정의 콘텐츠 CSS

  26. 26

    Python : 사용자 지정 콘텐츠, 위젯 및 이벤트 루프없이 큰 창을 표시하는 방법

  27. 27

    페이지 제목이 특정 제목과 같으면 NopCommerce에 콘텐츠 표시

  28. 28

    특정 역할 사용자가있는 사용자 만 콘텐츠에 로그인하는 방법

  29. 29

    Bootstrap 사용자 정의 테마로 WordPress 콘텐츠가 응답하지 않음

뜨겁다태그

보관