js 공백 관련 질문입니다.

js 공백 관련 질문입니다.

QA

js 공백 관련 질문입니다.

본문

<div id="section-four"  title="bestitem"  ></div>

<div id="section-five"  title="new arrivals"  ></div>

쇼핑몰에서 클릭시 해당 섹션으로 이동하고 스크롤시 해당 섹션 타이틀이 활성화 되는 소스입니다.

다른 부분은 정상 작동하는데 위 소스에서 title 부분 문자에 공백을 넣으면 해당 부분이 활성화 되지 않는 문제가 있네요.

 

스크립에서 공백처리를 해줘야 할  것 같은데요 구글링 6시간 하다가 도저히 안되어서 회원님들의 도움 구해봅니다.

 

아래가 스크립트 소스입니다.

------------------------------------

 

 jQuery(function($) {

  var html = $('html');
  var viewport = $(window);
  var viewportHeight = viewport.height();

  var scrollMenu = $('#section-menu');
  var timeout = null;

  function menuFreeze() {
    if (timeout !== null) {
      scrollMenu.removeClass('freeze');
      clearTimeout(timeout);
    }

    timeout = setTimeout(function() {
      scrollMenu.addClass('freeze');
    }, 2000);
  }
  scrollMenu.mouseover(menuFreeze);

  /* ==========================================================================
       Build the Scroll Menu based on Sections .scroll-item
       ========================================================================== */

  var sectionsHeight = {},
    viewportheight, i = 0;
  var scrollItem = $('.scroll-item');
  var bannerHeight;

  function sectionListen() {
    viewportHeight = viewport.height();
    bannerHeight = (viewportHeight);
    $('.section').addClass('resize');
    scrollItem.each(function() {
      sectionsHeight[this.title] = $(this).offset().top;
    });
  }
  sectionListen();
  viewport.resize(sectionListen);
  viewport.bind('orientationchange', function() {
    sectionListen();
  });

  var count = 0;

  scrollItem.each(function() {
    var anchor = $(this).attr('id');
    var title = $(this).attr('title');
    count++;
    $('#section-menu ul').append('<li><a id="nav_' + title + '" href="#' + anchor + '"><span>' + count + '</span> ' + title + '</a></li>');
  });

  function menuListen() {
    var pos = $(this).scrollTop();
    pos = pos + viewportHeight * 1.75;
    for (i in sectionsHeight) {
      if (sectionsHeight[i] < pos) {
        $('#section-menu a').removeClass('active');
        $('#section-menu a#nav_' + i).addClass('active');;
        var newHash = '#' + $('.scroll-item[title="' + i + '"]').attr('id');
        if (history.pushState) {
          history.pushState(null, null, newHash);
        } else {
          location.hash = newHash;
        }
      } else {
        $('#section-menu a#nav_' + i).removeClass('active');
        if (pos < viewportHeight - 72) {
          history.pushState(null, null, ' ');
        }
      }
    }
  }
  scrollMenu.css('margin-top', scrollMenu.height() / 2 * -1);

  /* ==========================================================================
       Smooth Scroll for Anchor Links and URL refresh
       ========================================================================== */

  scrollMenu.find('a').click(function() {
    var href = $.attr(this, 'href');
    $('html').animate({
      scrollTop: $(href).offset().top
    }, 500, function() {
      window.location.hash = href;
    });
    return false;
  });

  /* ==========================================================================
       Fire functions on Scroll Event
       ========================================================================== */

  function scrollHandler() {
    menuListen();
    menuFreeze();
  }
  scrollHandler();
  viewport.on('scroll', function() {
    scrollHandler();
    //            window.requestAnimationFrame(scrollHandler);
  });
});

#js

이 질문에 댓글 쓰기 :

답변 1

var newHash = '#' + $('.scroll-item[title="' + i + '"]').attr('id');

해당 위치를 찾는데 공백을 넣으면 위치를 찾는 부분을 못찾아서 그렇습니다.

 

타이틀 이후에 다른걸 넣고 싶으시면 타이틀 다음이 아니라

id 다음에 넣으세요

애드프로님
귀한 시간 내주셔서 감사드립니다.
문구 띄어 쓰기를 해야하는 부분에 &nbsp; 를 넣어서 해보니 해결이 되었습니다.
알려주신 방법도 잘 기억하겠습니다.
새해 복 많이 받으십시오.

답변을 작성하시기 전에 로그인 해주세요.
전체 299
QA 내용 검색
filter #js ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT