2008-12-04 10 views
1

J'utilise le plugin jQueryTreeview pour la navigation sur un site avec des niveaux imbriqués de catégories. Dans chaque catégorie il y a ensuite des produits, chacun ayant un ou plusieurs types d'information.Raccourcir la valeur de l'URL en tant que variable Javascript

donc mes URL peuvent être:

  1. foo.com/view/cat_id/
  2. foo.com/view/cat_id/prod_id/
  3. foo.com/view/cat_id/prod_id/info_id/

le problème est, la navigation pour les produits est distinct aux catégories, ce qui signifie que Treeview « sait » (et donc de actif "marques) cas 1. cas 2 & 3 signifie que l'arbre est effondré, alors que Je veux que l'arbre soit ouvert à cat_id pour tous les cas.

(Je suis ouvert à n'importe quoi, mais) Je pense que la solution est une supercherie Javascript pour enlever quoi que ce soit après cat_id/from the URL afin que je puisse ensuite passer le résultat à Treeview, mais pas au point avec Javascript je ne peux pas comprendre comment le faire.

Note: Je suis à la recherche de l'aide avec le regex Javascript, pas Treeview, mais le hors chance que quelqu'un sait d'une solution prête laminés je suis bien sûr toutes les oreilles.

TIA.

Répondre

1

Après l'aide d'un ami (merci Sawks) Je présente la réponse à ma propre question au cas où quelqu'un d'autre se retrouve dans le même bateau.

J'ai changé les lignes de départ 206 au sein de jquery.treeview.js:

case "location": 
    var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); }); 
    if (current.length) { 
     current.addClass("selected").parents("ul, li").add(current.next()).show(); 
    } 
    break; 
} 

à:

case "location": 
    var current_location = location.href.toLowerCase(); 
    var current_base = current_location.split('/').slice(0,5).join('/')+'/'; 
    var current = this.find("a").filter(function() { return this.href.toLowerCase() == current_base; }); 
    if (current.length) { 
     current.addClass("selected").parents("ul, li").add(current.next()).show(); 
    } 
    break; 
}