2013-05-02 1 views
0

J'ai combiné une fonction de recherche avec un accordéon jQueryUI.
La fonction de recherche met en évidence le titre de chaque section que le terme de recherche entré est trouvé. J'essaie de trouver un moyen de faire défiler la fenêtre vers la première occurrence d'un terme trouvé lorsqu'une section est ouverte, ce qui évite à l'utilisateur de devoir faire défiler du contenu potentiellement très long.
Chaque terme mis en surbrillance est entouré de <span class="highlight"&gt;term&lt;/span>. J'en suis au point où j'ai ajouté un gestionnaire onclick="jumpTo(chapter_number)" à chaque en-tête de section lorsqu'un terme y est trouvé. J'ai juste besoin d'aide avec la fonction jumpTo. Je vous remercie!jQuery Accordion - Faites défiler jusqu'à l'élément avec la classe spécifique sur la section ouverte

Voici mon violon: http://jsfiddle.net/jameshuckabonetech/YsdDn/

post-scriptum Le violon est génial! Premier ...

MISE À JOUR code Fin ...

$("#accordion").accordion(
{ 
    autoHeight: false, collapsible: true, active: false, 
    activate:function(event, ui) 
    { 
     if ($(ui.newPanel).find('.highlight').length>0 && $("#jump-box").prop('checked') == true) 
      $('html, body').animate(
      { 
       scrollTop: $(ui.newPanel).find('.highlight').offset().top 
      } 
      , 2000); 
    } 
}); 
+1

Vous allez avoir besoin d'ajouter un peu plus de code pour nous de travailler avec. Un exemple de jsfiddle.net où vous êtes en ce moment est très utile. – idrumgood

+0

Fait, mis à jour ... –

Répondre

2

Ne pas utiliser onclick utiliser l'événement activate de l'accordéon.

$("#accordion").accordion({ 
    autoHeight: false, collapsible: true, active: false, 
    activate:function(event, ui){ 
     if ($(ui.newPanel).find('.highlight').length>0) 
      $('html, body').animate({ 
       scrollTop: $(ui.newPanel).find('.highlight').offset().top 
       }, 2000); 
    }, 
    beforeActivate:function(e,ui) 
    { 
     //if statement to check if you want to stop the accordion from opening 
     e.preventDefault(); 
    } 
}); 

utilisé le code de défilement de jQuery scroll to element

+0

merci, cela a fonctionné (quand j'ai mis à jour jqueryui à 1.9.2 [eu 1.8.2]). Cependant, comment annuler la fonction onclick de quelque chose? –

+0

j'obtiens une erreur $ (...). Find (...). Offset (...) est indéfini --- des idées? –

+0

Cela fonctionne sur le violon que vous avez fourni. Quelque chose ne s'appelle pas le même. Très probablement la classe 'highlight'. Ou le panneau n'a aucun élément en surbrillance. Parcourez une partie de l'instruction à l'aide d'un débogueur JavaScript pour rechercher la pièce manquante. Modifié pour corriger les erreurs lorsqu'il n'y a pas d'éléments en surbrillance. – Knollbert

Questions connexes