Как использовать Danymic принять значение в JQPerui Droppable? - PullRequest
1 голос
/ 28 июня 2011

Я использую Jquery-интерфейс.У меня есть разные буксируемые ul на одной странице и разные перетаскиваемые li.Я хотел, чтобы: 1. ul отличались друг от друга по названию, например, «FUNCTION», «BUG» и т. Д. 2. li отличаются друг от друга по классу, например «.FUNCTOIN», «.BUG»,и т. д. 3. ul с заголовком «FUNCTION» может принимать только li с классом «.FUNCTION» и т. д. 4. заголовки ul (s) могут быть известны только во время их создания в представлении, согласно некоторымзначения хранятся в БД.

, но затем я столкнулся с некоторыми проблемами, вот различные варианты насыщенности:

, если я использую постоянное значение, оно работает хорошо, например:

        $("ul.droppable").droppable({
            accept: ".FUNCTION",

, в то время как все следующиепути провалились:

        $("ul.droppable").droppable({
            accept: "." + $(this).attr("title"), 

        $("ul.droppable").droppable({
            accept: '.' + $(this).attr("title"), 

        $("ul.droppable").droppable({
            accept: "\." + $(this).attr("title"), 

        $("ul.droppable").droppable({
            accept: '\.' + $(this).attr("title"), 

поэтому я поставил "."в названии и попробовал следующее, но все они потерпели неудачу:

        $("ul.droppable").droppable({
            accept: $(this).attr("title"), 

кстати, когда я имею в виду «не удалось», нет ошибки, всплывающее окно и т. д. Сбрасываемый просто не работал (неактивный, не зависший, не может быть отброшен.).

Я нашел множество демонстраций или Q / A этого "accept", но все они используют что-то, что может быть определено до выполнения.Таким образом, «принять» может использовать только постоянное значение, или способ, которым я его использую, был неверным?Спасибо за ответ или рекомендации или комментарии, которые могут помочь.


Согласно ответу от Xnake, способ сделать это заключался в следующем:

перед старым кодом droppable, добавьтепервые 3 строки:

        $("ul.droppable.accept").droppable({
            accept: function (e) { if (e.hasClass($(this).attr('accept'))) return true; }
        });
        $("ul.droppable").droppable({
            activeClass: "ui-state-default",
            ... //this is the old code.

Это означает, что если мы дадим «accept» класс для сбрасываемого ul, он будет принимать только объект с некоторым классом;в противном случае он может принять любой перетаскиваемый объект.

Тогда в представлении:

<ul class = "stories-of-category droppable accept" accept = "@map.Type" >
...
</ul>

если любой объект с классом с тем же именем с @ map.Type, он может быть здесь удаленНапример:

<ul title = ".."> //this is another ul.
    <li class = "@map.Type">
        @map.Title
    </li>
    ...
</ul>

1 Ответ

8 голосов
/ 28 июня 2011

Вы можете вместо этого сделать accept in droppable() как функцию и указать свои критерии внутри:

accept: function(e){
    if(e.hasClass($(this).attr('title'))) return true;
}

Или короче:

accept: function(e){
    return e.hasClass($(this).attr('title'));
}

Спасибо.

...