2015-12-31 2 views
0

Я пытаюсь отобразить всплывающую подсказку с ссылкой базы идентификатора якоря прокрутки, подсказка будет активна до активного DIV ид, после того, как она будет отображаться рядом уважала ссылку подсказкиидентификатора базового анкера прокрутка связь с подсказкой

, но для меня он не отображается во время прокрутки, я использую tooltipster и специальный код для привязки прокрутки ссылки из переполнения стека

например. http://us.blackberry.com/smartphones/blackberry-passport/overview.html

вот мой код

jQuery(document).ready(function($) { 
 
    $(".scroll").click(function(event) { 
 
    event.preventDefault(); 
 
    $('html,body').animate({ scrollTop:$(this.hash).offset().top } , 1000); 
 
    }); 
 
}); 
 

 
/** 
 
* This part handles the highlighting functionality. 
 
* We use the scroll functionality again, some array creation and 
 
* manipulation, class adding and class removing, and conditional testing 
 
*/ 
 

 
var aChildren = $(".dotservices li").children(); // find the a children of the list items 
 
var aArray = []; // create the empty aArray 
 
for (var i=0; i < aChildren.length; i++) {  
 
    var aChild = aChildren[i]; 
 
    var ahref = $(aChild).attr('href'); 
 
    aArray.push(ahref); 
 
} // this for loop fills the aArray with attribute href values 
 

 
$(window).scroll(function(){ 
 
    var windowPos = $(window).scrollTop(); // get the offset of the window from the top of page 
 
    var windowHeight = $(window).height(); // get the height of the window 
 
    var docHeight = $(document).height(); 
 

 
    for (var i=0; i < aArray.length; i++) { 
 
    var theID = aArray[i]; 
 
    var divPos = $(theID).offset().top; // get the offset of the div from the top of page 
 
    var divHeight = $(theID).height(); // get the height of the div in question 
 
    if (windowPos >= divPos && windowPos < (divPos + divHeight)) { 
 
     $("a[href='" + theID + "']").addClass("nav-active popactive"); 
 

 
     $('.poptip').tooltipster({ 
 
     position:'right' 
 
     }); 
 
     $('.popactive').tooltipster('show'); \t 
 
    } else { 
 
     $("a[href='" + theID + "']").removeClass("nav-active popactive"); 
 
     $('.popactive').tooltipster('hide'); 
 
    } 
 
    } 
 

 
    if(windowPos + windowHeight == docHeight) { 
 
    if (!$(".dotservices li:last-child a").hasClass("nav-active")) { 
 
     var navActiveCurrent = $(".nav-active").attr("href"); 
 
     $("a[href='" + navActiveCurrent + "']").removeClass("nav-active"); 
 
     /* $("a[href='" + navActiveCurrent + "']").removeClass("nav-active").tooltip('hide');*/ 
 
     /* $(".dotservices li:last-child a").addClass("nav-active").tooltip('show');*/ 
 

 
    } 
 
    } 
 
});
.dotservices { 
 
    width: 40px; 
 
    height: auto; 
 
    padding: 0; 
 
    text-align: center; 
 
    font-weight: bold; 
 
    color: #444; 
 
    text-decoration: none; 
 
    position: fixed; 
 
    top: 20%; 
 
    left: 0.5%; 
 
    display: block; 
 
    z-index:9999; 
 
} 
 
.dotservices li { 
 
    list-style: none; 
 
} 
 

 
.dotservices a { 
 
    display: block; 
 
    clear: both; 
 
    text-decoration: none; 
 
    font-family: 'FontAwesome'; 
 
    font-weight: normal; 
 
    font-style: normal; 
 
    text-align: center; 
 
    font-size: 14px; 
 
    color: #D1A94D; 
 
    line-height: 50px; 
 
    text-decoration: none; 
 
    width: 40px; 
 
} 
 
.dotservices a:before { 
 
    content: "\f111"; 
 
} 
 
.dotservices a.nav-active:before { 
 
    content: "\f10c"; 
 
    font-size: 18px; 
 
} 
 
.dotservices a:hover { 
 
    text-decoration: none; 
 
}
<link rel="stylesheet" type="text/css" href="http://itracktraining.com/web4/css/tooltip-style.css" /> 
 
<link rel="stylesheet" type="text/css" href="http://itracktraining.com/web4/css/tooltipster.css" /> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> 
 

 
<script src="http://itracktraining.com/web4/js/jquery.js" type="text/javascript"></script> 
 
<script src="http://itracktraining.com/web4/js/jquery-ui.min.js" type="text/javascript"></script> 
 
<script type="text/javascript" src="http://itracktraining.com/web4/js/jquery.tooltipster.min.js"></script> 
 

 
<div class="dotservices"> 
 
    <ul> 
 
    <li><a href="#services1" class="scroll poptip active" title="3G implementation & integration"></a></li> 
 
    <li><a href="#services2" class="scroll poptip" title="Full Turnkey Solutions"></a></li> 
 
    <li><a href="#services3" class="scroll poptip" title="IBS & Das Solutions"></a></li> 
 
    <li><a href="#services4" class="scroll poptip" title="Spare Parts management Services"></a></li> 
 
    <li><a href="#services5" class="scroll poptip" title="Operation & Maintenances"></a></li> 
 
    <li><a href="#services6" class="scroll poptip" title="Technical Consultancy Services"></a></li> 
 
    </ul> 
 
</div> 
 
<div id="services1" style="background-color:#CCC; display:block; width:100%;"> 
 
    <p>services1</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services2" style="background-color:#999; display:block; width:100%;"> 
 
    <p>services2</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 

 
<div id="services3" style="background-color:#006; display:block; width:100%;"> 
 
    <p>services3</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services4" style="background-color:#CCC; display:block; width:100%;"> 
 
    <p>services4</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services5" style="background-color:#999; display:block; width:100%;"> 
 
    <p>services5</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services6" style="background-color:#006; display:block; width:100%;"> 
 
    <p>services6</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div>

демо ссылка

http://itracktraining.com/web4/tool.html

+0

Консоль браузер говорит 'jquery.tooltipster.min.js: 1 Tooltipster: один или несколько подсказок уже прикреплены к этому элементу: не обращая внимания. Используйте параметр «multiple», чтобы прикрепить больше всплывающих подсказок ». Может ли это быть здесь? – ViRuSTriNiTy

+0

Я не получаю, вы можете объяснить это больше :) – Aryan

+0

Вы можете видеть эти сообщения при открытии консоли разработчика вашего браузера. Я проверяю следующую строку в '$ (window) .scroll()', чтобы быть причиной '$ ('. Poptip'). Tooltipster ({...' – ViRuSTriNiTy

ответ

1

Попробуйте это.

jQuery(document).ready(function ($) { 
 
       $(".scroll").click(function (event) { 
 
        event.preventDefault(); 
 
        $('html,body').animate({scrollTop: $(this.hash).offset().top}, 1000); 
 
       }); 
 
      }); 
 

 
      /** 
 
      * This part handles the highlighting functionality. 
 
      * We use the scroll functionality again, some array creation and 
 
      * manipulation, class adding and class removing, and conditional testing 
 
      */ 
 
      var aChildren = $(".dotservices li").children(); // find the a children of the list items 
 
      var aArray = []; // create the empty aArray 
 
      for (var i = 0; i < aChildren.length; i++) { 
 
       var aChild = aChildren[i]; 
 
       var ahref = $(aChild).attr('href'); 
 
       aArray.push(ahref); 
 
      } // this for loop fills the aArray with attribute href values 
 

 
    // added here tooltip 
 
      $('.poptip').tooltipster({ 
 
       position: 'right', 
 
       onlyOne: true 
 
      }); 
 

 
      $(window).scroll(function() { 
 
       var windowPos = $(window).scrollTop(); // get the offset of the window from the top of page 
 
       var windowHeight = $(window).height(); // get the height of the window 
 
       var docHeight = $(document).height(); 
 

 
       for (var i = 0; i < aArray.length; i++) { 
 
        var theID = aArray[i]; 
 
        var divPos = $(theID).offset().top; // get the offset of the div from the top of page 
 
        var divHeight = $(theID).height(); // get the height of the div in question 
 
//      if (windowPos >= divPos && windowPos < (divPos + divHeight)) { 
 
         if (windowPos <= divPos && divPos <= windowPos + (windowHeight/2)) { 
 
         $("a[href='" + theID + "']").addClass("nav-active popactive"); 
 
// removed from here and added above "$(window).scroll" 
 
//       $('.poptip').tooltipster({ 
 
//       position: 'right', 
 
//       onlyOne: true 
 
//       }); 
 
         $('.popactive').tooltipster('show'); 
 

 

 
        } else { 
 
         $("a[href='" + theID + "']").removeClass("nav-active popactive"); 
 
        } 
 
       } 
 
       if (windowPos + windowHeight == docHeight) { 
 
        if (!$(".dotservices li:last-child a").hasClass("nav-active")) { 
 
         var navActiveCurrent = $(".nav-active").attr("href"); 
 
         $("a[href='" + navActiveCurrent + "']").removeClass("nav-active"); 
 
         // $("a[href='" + navActiveCurrent + "']").removeClass("nav-active").tooltip('hide'); 
 
         // $(".dotservices li:last-child a").addClass("nav-active").tooltip('show'); 
 

 
        } 
 
       } 
 
      });
.dotservices { 
 
    width: 40px; 
 
    height: auto; 
 
    padding: 0; 
 
    text-align: center; 
 
    font-weight: bold; 
 
    color: #444; 
 
    text-decoration: none; 
 
    position: fixed; 
 
    top: 20%; 
 
    left: 0.5%; 
 
    display: block; 
 
    z-index:9999; 
 
} 
 
.dotservices li { 
 
    list-style: none; 
 
} 
 

 
.dotservices a { 
 
    display: block; 
 
    clear: both; 
 
    text-decoration: none; 
 
    font-family: 'FontAwesome'; 
 
    font-weight: normal; 
 
    font-style: normal; 
 
    text-align: center; 
 
    font-size: 14px; 
 
    color: #D1A94D; 
 
    line-height: 50px; 
 
    text-decoration: none; 
 
    width: 40px; 
 
} 
 
.dotservices a:before { 
 
    content: "\f111"; 
 
} 
 
.dotservices a.nav-active:before { 
 
    content: "\f10c"; 
 
    font-size: 18px; 
 
} 
 
.dotservices a:hover { 
 
    text-decoration: none; 
 
}
<link rel="stylesheet" type="text/css" href="http://itracktraining.com/web4/css/tooltip-style.css" /> 
 
<link rel="stylesheet" type="text/css" href="http://itracktraining.com/web4/css/tooltipster.css" /> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> 
 

 
<script src="http://itracktraining.com/web4/js/jquery.js" type="text/javascript"></script> 
 
<script src="http://itracktraining.com/web4/js/jquery-ui.min.js" type="text/javascript"></script> 
 
<script type="text/javascript" src="http://itracktraining.com/web4/js/jquery.tooltipster.min.js"></script> 
 

 
<div class="dotservices"> 
 
    <ul> 
 
    <li><a href="#services1" class="scroll poptip active" title="3G implementation & integration"></a></li> 
 
    <li><a href="#services2" class="scroll poptip" title="Full Turnkey Solutions"></a></li> 
 
    <li><a href="#services3" class="scroll poptip" title="IBS & Das Solutions"></a></li> 
 
    <li><a href="#services4" class="scroll poptip" title="Spare Parts management Services"></a></li> 
 
    <li><a href="#services5" class="scroll poptip" title="Operation & Maintenances"></a></li> 
 
    <li><a href="#services6" class="scroll poptip" title="Technical Consultancy Services"></a></li> 
 
    </ul> 
 
</div> 
 
<div id="services1" style="background-color:#CCC; display:block; width:100%;"> 
 
    <p>services1</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services2" style="background-color:#999; display:block; width:100%;"> 
 
    <p>services2</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 

 
<div id="services3" style="background-color:#006; display:block; width:100%;"> 
 
    <p>services3</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services4" style="background-color:#CCC; display:block; width:100%;"> 
 
    <p>services4</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services5" style="background-color:#999; display:block; width:100%;"> 
 
    <p>services5</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div id="services6" style="background-color:#006; display:block; width:100%;"> 
 
    <p>services6</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div> 
 
<div> 
 
    <p></p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
    <p>&nbsp;</p> 
 
</div>

+0

подсказка начинается только с середины поля div, мне нужно, чтобы она начиналась с paticular div. например, в ваших кодовых сервисах2 всплывающая подсказка начинается только через половину div – Aryan

+0

@Aryan См. мой отредактированный ответ, это как то, что вы хотите? –

1

Вы сделали несколько ошибок в обработчике window.scroll.

Заменить код следующей редакции:

<script> 
    ... 

    var updateToolTips = 
    function() 
    { 
     var windowPos = $(window).scrollTop(); // get the offset of the window from the top of page 
     var windowHeight = $(window).height(); // get the height of the window 

     var isToolTipShown = false; 

     for (var i=0; i < aArray.length; ++i) 
     { 
     var theID = aArray[i]; 
     var divPos = $(theID).offset().top; // get the offset of the div from the top of page 
     var divHeight = $(theID).height(); // get the height of the div in question 

     var $link = $("a[href='" + theID + "']"); 

     if (
      windowPos <= divPos && divPos <= windowPos + windowHeight && // show tooltip when element is displayed in viewport... 
      !isToolTipShown // ...but only if previous element does not show a tooltip already 
     ) 
     { 
      $link.addClass("nav-active popactive"); 

      if (!$link.is(".tooltipstered")) 
      { 
      $link.tooltipster({ 
       position:'right', 
       autoClose: false, 
       delay: 0 
      }); 
      } 

      $link.tooltipster('show'); 

      isToolTipShown = true; 
     } 
     else 
     { 
      $link.removeClass("nav-active"); 

      if ($link.is(".tooltipstered")) 
      $link.tooltipster('hide'); 
     } 
     } 
    }; 

    $(window).scroll(updateToolTips); 
    $(document).ready(updateToolTips); 

    ... 
</script> 

Как вы можете увидеть код

  1. использует многоразовой Регуляция
  2. обновить всплывающие подсказки при первом посещении страницы
  3. для обновления всплывающих подсказок при прокрутке
  4. запрашивает ссылку только один раз
  5. фиксирует огромное количество сообщений, записанных в консоли браузера, выполнив некоторые проверки вменяемости здесь и там
+0

, если вы зарегистрируете этот url, у меня есть обновленный код, но подсказка начинается с середины div, а последняя - обратите внимание, даже работая, любезно помогите мне из этого http://itracktraining.com/web4/tool2.html – Aryan

+0

@Aryan См. мое редактирование, должно теперь работать. – ViRuSTriNiTy

+0

любезно проверьте код снова, когда я наведите курсор на нижнюю ссылку, которую он показывает нормальное название вместо черного после первого o прокрутки, попробуйте mousehover в последнем teo или 3 itracktraining.com/web4/tool2.html – Aryan

Смежные вопросы