2010-08-12 26 views
9

Estoy trabajando en un site para un cliente que tiene contenido tabulado impulsado por jquery.¿Cómo obtengo un enlace para abrir una pestaña específica en una página?

Vincular a la página correcta es bastante fácil, pero el desafío es abrir la pestaña correcta cuando llegues allí. En la página de aproximadamente desplácese hasta la parte inferior y haga clic en el icono Moverlo (el del camión). Esto te lleva al move it page. Esto funciona bien, pero me gustaría que sea capaz de abrir la pestaña Especialidad.

Este es el código que se vincula a la página:

<li><a id="moveit" href="services_move_it.html">Move It</a></li> 

He intentado esto, pero no funciona correctamente

<li><a id="moveit" href="services_move_it.html#specialty">Move It</a></li> 

Este es el código para las fichas de la página de destino:

<div id="specialty-content" class="content"> 
    <p class="intro">Moving Simplified specializes in moving items such items as pool tables, pianos, antiques, and anything else you can throw at us.</p> 
    <div class="video-link"> 
    <a href="#">Watch the Move It Specialty Videos Now.</a> 
    </div> 
    <p> Moving such items is more complicated than most would understand, and is an art form in itself. We take pride in making sure that your priceless possessions are delivered damage free. The employees sent to move your belongings are highly experienced in these types of items. They will always be well equipped to complete the move with the most up to date technology in the moving industry.</p><p> We will always pad and wrap each individual piece, as well as provide custom crates to ensure the safety of your pool table slate.</p> 
    <div class="msg"> 
    <p><strong>Want to download the Move It Specialty guide?</strong> Go here <a href="#">now</a>.</p> 
    </div> 
</div> 

Aquí es el jQuery para el funcionamiento de las fichas:

$(document).ready(function() { 
/* this is for the tabbed content */ 
$("a.tab").click(function(evt) { 
    evt.preventDefault(); 
    $(".active").removeClass("active"); 
    $(this).addClass("active"); 
    $(".content").slideUp(); 

    var content_show = $(this).attr("id"); 
    $("#" + content_show + '-content').slideDown(); 
}); 

Porque tendré que hacer esto en múltiples combos de enlace/pestaña Me gustaría encontrar un enfoque sistemático.

¡Gracias por cualquier ayuda!

Respuesta

8

Esto es fácil de implementar el uso de plugins jQuery de Ariel Flesler junto con el dispositivo estándar de jQuery UI aquí:

Encontrará un "cómo" detallado en la publicación del blog en:

http://weblog.muledesign.com/2009/05/bookmarkable_tabs_with_jquery_ui.php

Este enfoque requiere una cantidad mínima de código y se pueden generalizar en todas las páginas.

Primero, configure las pestañas usando el widget jQuery UI Tabs.

Incluir los plugins jQuery en las páginas que utilizan fichas:

<script src="/javascripts/jquery.localscroll.js?1281125099" type="text/javascript"></script> 
<script src="/javascripts/jquery.scrollTo.js?1281125099" type="text/javascript"></script> 

a continuación, añadir esta (sustituyendo "#tabs" por cualquier div que está utilizando):

$(document).ready(function() { 
    if($("#tabs") && document.location.hash){ 
    $.scrollTo("#tabs"); 
    } 
    $("#tabs ul").localScroll({ 
    target:"#tabs", 
    duration:0, 
    hash:true 
    }); 
}); 

Y eso es todo !

+0

Gracias por pasar esto. Esta es la funcionalidad exacta que necesitaba. – fmz

+0

sus enlaces están rotos :( –

0

Necesito el código JS para manejar un hashpart. Podría verse algo como esto.

handleHashPart = function(tabs) { 
    var hashPart = window.location.hash; 
    if (! hashPart || hashPart.length === 0) { 
    return; 
    } 
    tabs.each(function() { 
    var link = $(this); 
    if (link.attr('href') == hashPart) { 
     link.trigger('click'); 
     return false; 
    } 
    return true; 
    }); 
}; 

handleHashPart($('a.tab')); 

Ponga esto después de conectar su controlador. Ahora tu enlace debería funcionar.

+0

Marek, gracias por responder. ¿Esto va en la página del enlace o en la página de destino o en ambos? – fmz

+0

Hasta ahora no puedo hacer que esto funcione. – fmz

+0

Ok, entonces tiene st h como este ahora: Why Us? Sustituya href aquí para href = "why_us". Ahora la URL about_us.html # why_us debería abrir su pestaña. Espero que esto funcione. –

1

Recientemente traté de crear mis propias pestañas. He cambiado el código para satisfacer sus necesidades, pero no estoy seguro si funciona:

Asegúrese de que el ID de su enlace es la mismo que lo que se pone después de la #

var curtab = window.location.href; // Get the url 
    curtab = curtab.split("#"); // Split the url at # 
    curtab = "#" + curtab[1]; // Put the info after the # in a variable 

    $("a.tab").each(function(i){ // Loop through all links and compare tab from url with value in link 
     if(curtab == $(this).attr("href")){ 
      $(this).addClass("active"); // If they are the same, set that tab's class to active 
     } 
    }); 

$("a.tab").click(function(){ // Select tab 
     $(".active").removeClass("active"); // Select the a, remove class for every link 
     $(this).addClass("active"); // Select the clicked tab and add an active class 
     var tabtocall = $(this).children().attr("href"); // Var to select current clicked tab 
     $(".content").slideUp; // Slide up all content 
     $(tabtocall).slideDown("normal"); // Slide down the selected content 
    }); 

¡Espero que esto ayude!

Editar:

El código siguiente es establecer el vínculo de la ficha de activo (ver comentario) en función de su estructura.

$(".tabs a").each(function(i){ // Loop through all the links 
     if(curtab == $(this).attr("id")){ // Compare the value from the url with the id 
      $(this).addClass("active"); // If equal add class active 
     } 
    }); 
+0

Rick, nos estamos acercando. La pestaña aún no selecciona correctamente. Aquí está la página de inicio: http://www.theideapeople.com/projectpath/movingsimplified/about_us.html. Desde la parte inferior, haga clic en el teclado del piano. Va a esta página http://www.theideapeople.com/projectpath/movingsimplified/services_move_it.html#specialty y muestra el contenido correcto, pero no se abre en la pestaña correcta. – fmz

+0

Cuando miro tu código fuente, veo que tus enlaces de pestañas se mantienen en una ul con las "pestañas" de la clase. En el jquery parece que no puedo encontrar dónde se compara el ID del enlace con el ID de la url. Agregué un código a mi respuesta. Podrías probar eso. También noté que el contenido de la pestaña comercial se muestra debajo del contenido especial después de hacer clic en el piano en la página about_us. Es posible que desee examinar eso también. Me registro mañana nuevamente. El código puede estar un poco apagado ya que está casi a la 1 de la madrugada;) Espero que entiendas la idea y te lleve más lejos en tu camino. –

0
$('.LinkSelector').click(function(){ 
    $("#tabs").tabs("select", "#tabs-1"); 
    }); 

código anterior también es útil.

Cuestiones relacionadas