2010-04-12 92 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