2009-01-04 83 views
0

我目前正在嘗試使用jQuery處理無序列表,本質上我有一個無序列表中的鏈接列表,某些用戶只能訪問(所有設置服務器端)某些文件/頁面。使用jQuery處理列表項目

我一直希望使用一些jQuery從DOM中刪除一些列表項,只是因爲它更吸引我沒有用戶點擊鏈接,加載頁面,然後顯示錯誤,因爲他們有訪問不足。

我已經有一個對象設置,併成功地從DOM中刪除了一個獨立的鏈接,儘管我似乎無法讓選擇器正確地刪除列表項。

列表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> 

對象迄今:

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

只是一個建議,但不顯示一個安全的菜單項與顯示它,但讓它看起來「禁用」,通常可能是一個非直觀的UI設計。 「看到」你無法訪問的內容往往更容易,然後相反(你的設計意味着什麼)。 :) – deadbug 2009-01-04 08:27:53

+0

typo darnit:你應該是你的:) – deadbug 2009-01-04 08:28:53

回答

4

我不認爲jQuery是這個合適的工具(我會做服務器端),但我會添加類服務器端到他們沒有訪問的項目,然後只是做

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

如果你打算這樣做,j因爲你已經有了代碼,所以最好把它們移到服務器端。