https://xetown.com/topics/1480956#comment_1481053

 

위 댓글 언급 관련 작업을 시도해 보고 싶은데  javascript 기초가 없다보니 아이디어는 있는데 코드를 작성을 못하겠네요.

 

 

 

 

<li class="ap_menu_search_menu" id="ap_menu_search_111751">
<span class="star" style="display:none;color: #f9c537;"><i class="fas fa-star"></i> </span>

<a href="/board_req">게시판 요청</a>

</li>

 

위와 같은 li 가 반복이됩니다. 

 

 

#prmymenu li a 여기에  회원마다 즐겨찾기 메뉴명이 설정한 갯수 만큼 출력이 되고 있습니다.

 

 

위 "게시판 요청" 텍스트가 #prmymenu li a 에 있는지 확인을 해서 있다면 id="ap_menu_search_111751" 의 .star의 'display', 'unset' 을 해주는 작업을 해야 합니다. 

 

이 작업이 li 숫자만큼 박복이 되어야 합니다.

 

.ap_menu_search_menu 를 갯수를 확인하면  li 갯수가 나옵니다.

 

.ap_menu_search_menu 의 id 값을 배열에 담아야 할 것 같긴한데 그 배열의 값 갯수를 확인해도 li 갯수는 동일하게 나올 것 같구요.

 

 

반복문으로 위 배열에 담은 값을 반복해서 돌려가면서 #prmymenu li a 에 값이 있는지 있다면 그에 맞는 id 의 .star의 'display', 'unset' 을 해주고 없다면 그냥 넘어가고 하면 될 것 같습니다.

 

 

염치 없이 코드 전체를 요청하는 꼴이 되었는데 혹시 도움 주시면 시도해 보겠습니다.

  • profile
    a 태그의 href 속성값이 일치하는 경우에 .show() 메소드를 사용하면 되지 않을까요?
    즐겨찾기 메뉴들의 href 값과 메뉴 찾기 위젯 목록들의 href 값이 동일한 형식이어서 상호 비교가 가능하다면요.
    (물론 a태그의 text로도 비교가 가능할 거 같기는 한데 혹시라도 같은 이름을 쓰는 메뉴들이 있을 수도 있으니까 href가 더 적당할 것 같습니다.)

    그러려면 우선,
    빈 배열 변수 만들고, #prmymenu li a 를 루프 돌려서, 각 요소의 href 속성값을 배열 변수에 push해줘야겠구요.

    그런 다음,
    (배열 변수가 빈 변수가 아니라는 조건을 달아서)
    .ap_menu_search_menu를 루프 돌려서, $(this).children('a')의 href 속성값이 만들어뒀던 배열 변수에 포함되어 있으면 $(this).children('span').show(); 해주면 될 것 같다는...
  • profile profile

    답변감사합니다.
    herf로 하던 text로 하던 동일할 것 같은데요. 루프를 돌려서 확인하고 하는 코드작성이 어려워 글을 작성하게 되었습니다.

     

    반복없이 일괄적으로 처리하는 방식은 검색으로 처리를 해서 해결을 했는데 한 화면에 반복이 되는 것을 처리하려니 어려워서요.

  • profile profile
    말씀하신게 링크파싱 모듈의 js에

    // Extract Paragraphs with Regulr Expression
    var ps = x.find('div:not(:has(p)), p').filter(function () {
    return $(this).text().match(url_regex);
    });
    if (ps.length < 1) return;

    // Make URL Array without Exceptive Domain
    var urls = [];
    if (ap_parser_exception) ap_parser_exception = ap_parser_exception.split(',');
    ps.each(function (i) {
    var matches = $(this).text().match(url_regex);
    for (n = 0; n < matches.length; n++) {
    var _exp = true;
    if (ap_parser_exception.length > 0) {
    $.each(ap_parser_exception, function (idx, val) {
    if (matches[n].indexOf(val) != -1) _exp = false;
    });
    }
    if (_exp == false) {
    urls.push(matches[n]);
    // Insert Preview Container
    $(this).after(ap_parser_output);
    }
    }
    });



    요 코드 같은데 봐도 응용 자체가 안되네요 ㅜㅡ
  • profile profile
    이런 방식을 말한 건데요.
    저도 바로 쓴 거라 오류가 있을지 모르겠습니다.

    var mymenus = [];
    $('#prmymenu li').each(function() {
    mymenus.push($(this).text());
    });
    if ( mymenus && mymenus.length ) {
    $('.ap_menu_search_menu').each(function() {
    if ( $.inArray($(this).children('a').text(), mymenus) != -1 ) {
    $(this).children('span').show();
    }
    });
    }
  • profile profile

    감사합니다. 위젯 스킨에 스크립트 추가해서 잘 됩니다.

     

    star.png

  • profile
    jquery의 each로 돌리면서 조건이 맞으면 처리해주면 될것 같은데요.

    function xxxxx(val) {
    $("#prmymenu li.ap_menu_search_menu").each(function (index, item) {
    if($(item).find("a").html() == val) {
    $(item).find("span.star").css({"display":"unset"});
    }
    });
    }

    xxxxx("게시판 요청");

    뭐 대강 이런식입니다. 댓글창에 바로 쓴거라 어딘가 오류가 있을수도 있어요.
    잠이 덜 깨서 원하시는 동작이 이게 맞는지는 모르겠네요.