2010-04-12 59 views
1

我正在開發一個MMO「公會」項目,爲公會成員提供隨機生成的遊戲任務。他們可以「阻止」分配的三項任務。與列表「下拉列表」和列表項獲取下拉列表中的問題

名單將是這個樣子:

<ul> 
    <li class="blocked">Task that is blocked</li> 
    <li class="blocked-open">Click to block a task</li> 
    <li class="blocked-open">Click to block a task</li> 
</ul> 

blocked-open類意味着他們沒有選擇任務來阻止呢。 blocked任務意味着他們已經阻止了一項任務。當他們點擊列表中的項目,我想這顯示:

<ul class="tasks-dropdown no-display"> 
    <li><h1>Click a Task to Block</h1></li> 
     <ul class="task-dropdown-inner"> 
      <?php 
       //output all tasks 
        foreach($tasks as $task) { 
         echo '<li class="blocked-option"><span id="'.$task.'">'.$task.'</span></li>'; 
         } 
      ?> 
      <br class="clear" /> 
     </ul> 
</ul> 

我不太知道怎麼回事,當用戶點擊.blocked-open行項目,顯示下只有他們點擊一個下拉列表。

在我變得困惑之前,我的jQuery看起來像這樣。

$("li.blocked-open").click(function() { 
    $("ul.no-display").slideToggle("900"); 
    }); 

    $(".blocked-option span").click(function() { 
     var task = $(this).attr('id'); 
      alert("You have blocked: " + task); 
      location.reload(true); 
     }); 

我通過將下拉列表中的代碼行項目下進行了測試,它工作得很好,但是當我有一個以上的下拉列表中的代碼,點擊一個行項目切換所有的下拉菜單。我不知道該怎麼做。 :-P。

回答

2

您的問題是由於您目前無法唯一識別您想要顯示的下拉列表並將其與您點擊的項目鏈接在一起而導致的。 一個簡單的方法,但不是很靈活,將分配一個簡單的數字ID到每個「封鎖」或「封鎖開放」項目。然後給每個下拉列表一個像例如dropdown_1的id。然後調整你的代碼是這樣的:

$("li.blocked-open").click(function() { 
    var id = $(this).attr("id"); 
    $("#dropdown_"+id).slideToggle("900"); 
}); 

我沒有測試過這一點,但它應該工作...我認爲:)

+0

行之有效。謝謝! – Andrew 2010-04-12 16:48:08