2009-01-04 7 views
0

J'essaie actuellement de manipuler une liste non ordonnée avec jQuery, essentiellement j'ai une liste de liens dans une liste non ordonnée, certains utilisateurs ont seulement accès (tous ensemble côté serveur) à certains fichiers/pages. J'espérais utiliser un certain jQuery pour supprimer quelques éléments de la liste du DOM, simplement parce qu'il est plus intéressant pour moi de ne pas cliquer sur un lien, de charger la page et ensuite afficher une erreur parce qu'ils ont accès insuffisant.Manipulation d'éléments de liste avec jQuery

J'ai déjà une configuration d'objet, et j'ai réussi à supprimer un lien autonome du DOM, bien que je n'arrive pas à obtenir le sélecteur correct pour supprimer les éléments de la liste.

Liste HTML:

<div id="browse" class="bubble"> 
<blockquote> 
<ul id="browses"> 
<li><a href="browse.php?id=15" class="browse">Access</a><br /></li> //trying to remove 
<li><a href="browse.php?id=1" class="browse">Accounts</a><br /></li> //trying to remove 
<li><a href="browse.php?id=2" class="browse">Browse's</a><br /></li> //trying to remove 
<li><a href="browse.php?id=7" class="browse">Commands</a><br /></li> //trying to remove 
<li><a href="browse.php?id=4" class="browse">Content</a><br /></li> 
<li><a href="browse.php?id=8" class="browse">Logs</a><br /></li> 
<li><a href="browse.php?id=10" class="browse">Sessions</a><br /></li> 
<li><a href="browse.php?id=11" class="browse">Settings</a><br /></li> //trying to remove 
<li><a href="browse.php?id=12" class="browse">Sites</a><br /></li> //trying to remove 
</ul> 
</blockquote> 
<cite>Browse and manage the currently active sites data</cite> 
</div> 

objet jusqu'à présent:

Session = function(){ 
    this.init(phpdev_session); 
} 

$.extend(Session.prototype, { 
    // object variables 
    vars: '', 

    init: function(phpdev_session){ 
     // do initialization here 
     this.vars = phpdev_session; 
    }, 

    restrict: function() { 
     if (this.vars.account_class == '40') { 
      //access client or less, remove manage another site link and a few browses from #browse ul 
      //note: its all restricted server side, so its just a presentation layer. 
      $('a#activate').remove(); 
      $('#browses').remove('li:eq(0)').remove('li:eq(1)').remove('li:eq(2)').remove('li:eq(3)').remove('li:eq(7)').remove('li:eq(8)'); 
     } 
    } 
}); 

$(document).ready(function() { 
    var session = new Session(phpdev_session); 
    session.restrict(); 
}); 
+1

Simplement une suggestion, mais ne pas afficher un élément de menu sécurisé par rapport à l'afficher, mais en le faisant apparaître "désactivé", peut souvent être une conception d'interface utilisateur très intuitive. Il est souvent plus facile de «voir» ce à quoi on n'a pas accès alors le contraire (ce que vous êtes en train de concevoir). :) – deadbug

+0

typo darnit: vous devriez être votre :) – deadbug

Répondre

4

Je ne pense pas que jQuery est l'outil idéal pour cela (je le ferais côté serveur), mais je ajouter une classe côté serveur aux éléments qu'ils n'ont pas accès, puis le faire

$(".noAccess").remove(); 

Si vous allez faire si, j ust les supprimer côté serveur puisque vous aurez le code en place.

+0

Si cela va être fait du côté JS, '.restrictedAccess' pourrait être plus approprié que' .noAccess' car il serait un indice que l'action est "limité." Sinon, il sera toujours généré avec "aucun accès", que la logique JS détermine ou non qu'il n'y a pas d'accès. –

+0

J'utilise actuellement smarty, ce qui signifiait faire de nouveaux fichiers, ou éditer des tpl existants avec des instructions if (puis assigner les variables à vérifier dans tous les fichiers), ce qui nécessite plus de travail que quelques lignes de jquery (et le serveur la validation latérale était déjà là, juste après le chargement). – Asciant

+0

J'ai donné un coup de main à la suggestion de classe et cela a fonctionné un régal, et tout dans un fichier éditent :) merci – Asciant

Questions connexes