Listesi "dropdowns" Troubles

1 Cevap php

Ben lonca üyelere oyun için rastgele oluşturulmuş görevler verir bir MMO "lonca" için bir proje üzerinde çalışıyorum. Onlar atanan üç görevi "bloke" edebilir.

Listeleri bu gibi bir şey olacaktır:

<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 sınıf henüz engellemek için bir görev seçmediniz demektir. blocked görev zaten bir görevi bloke ettik demektir. Bu liste öğesini tıklatın, ben bu görünmesini istiyorum:

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

Ben oldukça onlar tıklandığında only birinin altında olduğunu açılır.Genel göstermek için nasıl, kullanıcı .blocked-open hat öğeyi tıklattığında, bilmiyorum.

Ben karışık olmadan önce benim jQuery bu gibi görünüyordu.

$("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);
        });

Ben kod bir satır öğesi altında açılan koyarak test ve iyi çalıştı, ama bir satıra tıklayarak, kod birden fazla açılan olduğunda öğe tüm dropdowns değiştirir. Ben ne emin değilim. :-P.

1 Cevap

Your problem is caused because you currently have no way of uniquely identifying which dropdown you want to appear and that links it with the item you've clicked. An easy way, but not very flexible, would be to assign a simple numerical id to each "blocked" or "blocked-open" item. Then give each dropdown an id of something like eg dropdown_1. Then adjust your code to something like this:

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

Ben bu test değil, ama çalışması gerekir ... bence :)