Javascript jQuery-当滚动到达块时如何启动脚本?

Javascript jQuery-当滚动到达块时如何启动脚本?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在使用一个jQuery“自制”脚本(我在这里找到的),我喜欢在滚动到达选项卡块(页面末尾的蓝色和灰色块)时启动这个脚本 这是一个 我的HTML: <section id="Block" class="container-fluid block"> <div class="row accordeon"> <div class="blue"> <ul class="nav nav-tabs" id="myT

我正在使用一个jQuery“自制”脚本(我在这里找到的),我喜欢在滚动到达选项卡块(页面末尾的蓝色和灰色块)时启动这个脚本

这是一个

我的HTML:

<section id="Block" class="container-fluid block">
    <div class="row accordeon">
        <div class="blue">
            <ul class="nav nav-tabs" id="myTab">
              <li class="active"><a href="#deposer">1 - Déposez un projet appel d’offre et recevez en moyenne 10 devis</a></li>
              <li><a href="#comparer">2 - Comparez les devis et négociez librement</a></li>
              <li><a href="#choisir">3 - Choississez le prestataire que vous voulez, quand vous voulez</a></li>
              <li><a href="#payer">4 - Payez le prestataire par le moyen de votre choix</a></li>
              <li><a href="#evaluer">5 - Evaluez le prestataire sur Codeur.com</a></li>
          </ul>
        </div>
        <div class="gray">
            <div class="tab-content">
              <div class="tab-pane active" id="deposer">
                <h4 class="text-left">1 - Déposez un projet appel d’offre et recevez en moyenne 10 devis</h4>
                <p>Sans même vous inscrire, vous publiez votre projet. Il correspond à un appel d'offres auquel les prestataires vont répondre. C'est gratuit et l'inscription se fait automatiquement et simultanément.</p>
                <p>Une fois le projet publié sur Codeur, les prestataires concernés sont avertis. Vous n'avez rien d'autre à faire. Vous recevez rapidement des devis gratuits qui seront classés sous la description de votre projet.</p>
                <p>En savoir plus sur le dépot de projet :</p>
                <ul class="unstyled">
                    <li><a class="shake" href="#">Comment créer mon projet ?<i class="icon-arrow"></i></a></li>
                    <li><a class="shake" href="#">Comment bien décrire mon projet ?<i class="icon-arrow"></i></a></li>
                </ul>
              </div>
              <div class="tab-pane" id="comparer">
                <h4 class="text-left">2 - Comparez les devis et négociez librement</h4>
                <p>Comparez les devis et discutez avec leurs prestataires par messagerie privée, par messagerie instantanée ou par téléphone (si vous le souhaitez). Vous pouvez aussi modifier votre projet et donner des précisions aux prestataires. Vous négociez librement et mettez les prestataires en concurrence pour obtenir les meilleurs prix et délais et les meilleures prestations.</p>
                <p>En savoir plus sur :</p>
                <ul class="unstyled">
                    <li><a class="shake" href="#">Comment inviter un prestataire à faire une offre sur mon projet ?<i class="icon-arrow"></i></a></li>
                    <li><a class="shake" href="#">Comment utiliser la messagerie ?<i class="icon-arrow"></i></a></li>
                </ul>
              </div>
              <div class="tab-pane" id="choisir">
                <h4 class="text-left">3 - Choississez le prestataire que vous voulez, quand vous voulez</h4>
                <p>C'est vous qui décidez quand et si vous sélectionnez un prestataire. Vous sélectionnez la personne que vous voulez. C'est très simple, il vous suffit de le sélectionner à partir de la fiche de votre projet.</p>
                <p>Choisir un prestataire sur Codeur vous permettra de l'évaluer à l'issue de sa prestation. Vous pouvez aussi demander, avant de commencer le projet, de signer un devis en bonne et due forme.</p>
                <ul class="unstyled">
                    <li><a class="shake" href="#">Comment choisir un prestataire pour réaliser mon projet ?<i class="icon-arrow"></i></a></li>
                    <li><a class="shake" href="#">Pourquoi attribuer un projet sur Codeur.com est il plus sûr ?<i class="icon-arrow"></i></a></li>
                </ul>
              </div>
              <div class="tab-pane" id="payer">
                <h4>4 - Payez le prestataire par le moyen de votre choix</h4>
                <p>C'est vous qui décidez comment vous réglez votre prestataire. Vous discutez avec lui du moyen de paiement qui vous convient à tous les deux. Pour plus de sécurité, vous pouvez bloquer le paiement sur <a href="#">Codeur Tasks</a> en début de projet, et vous libérez le paiement par étape : à chaque étape réalisée correspond un paiement. Cela permet d'éviter la plupart des litiges.</p>
              </div>
              <div class="tab-pane" id="evaluer">
                <h4>5 - Evaluez le prestataire sur Codeur.com</h4>
                <p>Dès la fin du projet, vous pouvez évaluer le prestataire. Votre évaluation sera publiée sur le site et si elle est positive, aidera le prestataire à trouver de nouveaux projets. Le prestataire pourra également vous évaluer et ainsi renforcer votre réputation sur Codeur.com pour trouver un prestataire lors de la publication d'un prochain projet.</p>
              </div>
            </div>
        </div>
    </div>
</section>

1-10号设计项目的设计和验收 没有你的参与,你就没有项目。这是一封信。这是一份报酬和一份题词,是一份自动完成和同时完成的工作

在公共事业项目上,公共事业的发展是不可避免的。你是我们的朋友。您是否可以在项目描述中快速获得奖励

萨伏尔加上项目现场:

2-比较设计和实验 < PraseDes和DeCuTez AvEC Leuls PrimaStaysPar MeaGracePravee,Par MeasgeleIt SuneNe ee Par TeleLePhone(Si-Vuele Souaiez)。您是否愿意参与项目和决策。您是否同意参加国际汽车大奖赛和国际汽车大奖赛,并同意参加国际汽车大奖赛和国际汽车大奖赛

安萨沃加苏尔:

3-你可以选择你的朋友,你的朋友 这是你的权利,也是你的选择。你选择什么样的人。这很简单,只要你愿意,就足以成为项目的一部分

请您在估价员的许可证上签字。您是需求方、项目启动先锋、设计方和设计方

4 - Payez le PLE 这是你对你的评论。你可以讨论一下你的付款方式是否方便。Plus加上De Se CuriTe,Vou-Pouvz Bluter-Le PasiSeNeDe,但DePlutet,et vou-Leee Rez LayPaess PayeTele:塞拉·佩米特·德维特(Cela permet déviter)是一名诉讼律师

5-Evaluez le prestataire sur Codeur.com 项目财务部,你是普雷斯塔泰尔的估价师。现场和现场的公共评估血清呈阳性,新项目评审委员会。您的估价师和估价师必须遵守Codeur.com的规定,才能在项目出版前完成估价工作

我的滚动脚本:

<!-- Show anim on Scroll -->
<script>
$(document).ready(function() {
/* Every time the window is scrolled ... */
      $(window).scroll( function(){
          /* Check the location of each desired element */
          $('.ShowMe').each( function(i){
              var bottom_of_object = $(this).offset().top + $(this).outerHeight();
              var bottom_of_window = $(window).scrollTop() + $(window).height();
              /* If the object is completely visible in the window, fade it it */
              if( bottom_of_window > bottom_of_object ){
                  $(this).animate({'opacity':'1'},500);
              }
          });
      });
  });
  </script>

$(文档).ready(函数(){
/*每次滚动窗口时*/
$(窗口)。滚动(函数(){
/*检查每个所需元件的位置*/
$('.ShowMe')。每个(函数(i){
变量bottom\u of_object=$(this.offset().top+$(this.outerHeight();
var bottom_of_window=$(window.scrollTop()+$(window.height());
/*如果对象在窗口中完全可见,请将其淡入淡出*/
if(窗口的底部>对象的底部){
$(this.animate({'opacity':'1'},500);
}
});
});
});
选项卡动画的我的脚本:

<!-- Tabs -->
<script>
    var tabChange = function () {
      var tabs = $('.nav-tabs > li');
      var active = tabs.filter('.active');
      var next = active.next('li').length ? active.next('li').find('a') : tabs.filter(':first-child').find('a');
      // Use the Bootsrap tab show method
      next.tab('show');
    };
    // Tab Cycle function
    var tabCycle = setInterval(tabChange, 5000);

    // Tab click event handler
    $('a').on('click', function (e) {
      e.preventDefault();
      // Stop the cycle
      clearInterval(tabCycle);
      // Show the clicked tabs associated tab-pane
      $(this).tab('show');
      // Start the cycle again in a predefined amount of time
      setTimeout(function () {
      //tabCycle = setInterval(tabChange, 5000);
      }, 15000);
  });
</script>

var tabChange=函数(){
var tabs=$('.nav tabs>li');
var active=tabs.filter('.active');
var next=active.next('li')。length?active.next('li')。find('a'):tabs.filter(':first child')。find('a');
//使用Bootsrap选项卡show方法
next.tab('show');
};
//制表符循环功能
var tabCycle=设置间隔(tabChange,5000);
//选项卡单击事件处理程序
$('a')。在('click',函数(e)上{
e、 预防默认值();
//停止循环
清除间隔(tabCycle);
//显示已单击的选项卡关联的选项卡窗格
$(this.tab('show');
//在预定义的时间内再次开始循环
setTimeout(函数(){
//tabCycle=setInterval(tabChange,5000);
}, 15000);
});

我认为首先,在滚动后,您需要检查对象是否在屏幕内。如果到达该对象,则使用If语句检查该对象是否可见,然后应执行代码

看看这个,看看整个JS函数

JS

$(window).scroll(function() {
    if (checkVisible($('#tester'))) {
        alert("Visible!!! Paste your code in this if function!")        
    } else {
        // do nothing
    }
});
在你的情况下,那会是:

$(window).scroll(function() {
    if (checkVisible($('#tester'))) {
        var tabChange = function () {
          var tabs = $('.nav-tabs > li');
          var active = tabs.filter('.active');
          var next = active.next('li').length ? active.next('li').find('a') : tabs.filter(':first-child').find('a');
          // Use the Bootsrap tab show method
          next.tab('show');
        };
        // Tab Cycle function
        var tabCycle = setInterval(tabChange, 5000);

        // Tab click event handler
        $('a').on('click', function (e) {
          e.preventDefault();
          // Stop the cycle
          clearInterval(tabCycle);
          // Show the clicked tabs associated tab-pane
          $(this).tab('show');
          // Start the cycle again in a predefined amount of time
          setTimeout(function () {
          //tabCycle = setInterval(tabChange, 5000);
          }, 15000);
      });        
    } else {
        // do nothing
    }
});
希望这有帮助

——编辑:

要解决函数被多次调用的问题,需要解除滚动事件的绑定

将此添加到代码中:
$(窗口).off('scroll')


有什么问题?脚本没有启动吗?请解释这两项工作。问题是,我喜欢在用户滚动页面并到达块时启动第二个脚本“tab”start。你明白吗?你有什么想法@Rotan075?看看我的答案@bep42它行得通!但是我现在有一个问题关于
$(window).on('scroll', function() {
        if (checkVisible($('#Block'))) {
            $(window).off('scroll'); # add this
            var tabChange = function () {