jQuery, Поддающийся сортировке и Сбрасываемый

Я хочу иметь список, который является поддающимся сортировке, но я также хочу, чтобы элементы в том списке были сбрасываемыми отделениям, которые я определил как сбрасываемые. Я, может казаться, не нахожу способ сделать это. Какие-либо идеи?

27
задан Kara 10 August 2017 в 00:12
поделиться

2 ответа

<?php
function get_all_substrings($input){
    $subs = array();
    $length = strlen($input);
    for($i=0; $i<$length; $i++){
        for($j=$i; $j<$length; $j++){
            $subs[] = substr($input, $i, $j);               
        }
    }
    return $subs;
}

$subs = get_all_substrings("Hello world!");
print_r($subs);

?>

Даже если для достижения этой цели есть необычный двухлайнер, я сомневаюсь, что он более эффективен или прост для понимания (чтобы кто-либо понял его, ему, вероятно, придется посмотреть документы. Большинство людей, вероятно, получают то, что substr делает, даже не глядя на это вверх).

-121--4577946-

Вы пытались поместить общие файлы в $ CATALINA _ HOME/lib ? Там так написано. " Как правило, классы приложений НЕ должны размещаться здесь ", но звучит так, как вы бы хотели в вашем случае.

$ CATALINA _ HOME/shared/lib, похоже, отсутствует в 6.0 (это было в 5.5).

-121--1906230-

Насколько я мог судить, проблема с предыдущим кодом, который я разместил, заключается в том, что функция drop от droppable вызывалась до мышления сортируемого, и поскольку я переписал список, сортируемый разозлился (из-за отсутствия лучших терминов). Это несколько предположение.

Глядя на окончательный код:

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
    <script type="text/javascript">

var dropped = false;
var templateHtml;
$(document).ready(function(){

    setSortable();

    $("#droppable").droppable({
        activeClass: 'active',
        hoverClass:'hovered',
        accept:".drop",
        drop:function(event,ui){
            dropped = true;
            //alert(ui.draggable.text());
        }
    });

});

function setSortable(){
    $("#sortable").sortable({
        stop:function(event,ui){
            if(dropped){
                $("#sortable").sortable('destroy').html(templateHtml);
                dropped = false;
                setSortable();
            }
        }
    });

    $("#sortable li").addClass("drop").bind('mousedown',function(){
        templateHtml = $("#sortable").html();
    });
}

    </script>
    <style type="text/css">
    #sortable li{
        clear:both;
        float:left;
    }

    #droppable {
        clear:both;
        height:300px;
        width:400px;
        background-color:#CCC;
    }
    #droppable.active {
        background-color:#CFC;
    }
    #droppable.hovered {
        background-color:#CCF;
    }
    </style>

</head>
<body>

<ul id="sortable">
<li id="one">One</li>
<li id="two">Two</li>
<li id="three">Three</li>
<li id="four">Four</li>
<li id="five">Five</li>
<li id="six">Six</li>
</ul>

<div id="droppable">
Drop Here
</div>

</body>

Здесь задействованы тонны причуд.

Я попытался сохранить # sortable html на начальном событии sortable, но это получение вызывается после того, как все ui-css будет применен, и в конечном итоге размещение элементов списка в сумасшедших местах. Мне нужно было использовать функцию mousedown на LI.

setSortable находится в функции, так как событие stop перезаписывает сортировку, которая является «рекурсивной». Не уверен, что точная терминология здесь, но мы можем пойти с досадно запутанным.

К счастью, функция drop для droppable вызывается перед функцией остановки sortables, поэтому я смог установить глобальную переменную droped, которая использовалась для просмотра, был ли элемент удален.

Я все еще удивлен, что это было не легче сделать, я думал, что jQuery будет иметь функции, чтобы справиться с этим намного лучше. Возможно, мне чего-то не хватает?

4
ответ дан 28 November 2019 в 05:45
поделиться

Я потратил весь день на этом, и я настал намного ближе, но все же не делать, как я бы хотел. Теперь у меня есть нужна функциональность, но ошибка JavaScript получила бросок.

Проблема получает сортируемый список, чтобы вернуться к своей предыдущей позиции, если элемент удаляется в DropPable, а не в списке. В настоящее время я сохраняю HTML OnMousedown, затем перезаписывая HTML в функцию Drop от DropPable. Это работает, но это дает мне переменную jQuery - это нулевая ошибка. Кто-нибудь может найти лучшее решение?

код:

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
    <script type="text/javascript">

var templateHtml;
$(document).ready(function(){

    $("#sortable").sortable();
    $("#sortable li").addClass("drop").bind('mousedown',function(){
        templateHtml = $("#sortable").html();
    });
    $("#droppable").droppable({
        activeClass: 'active',
        hoverClass:'hovered',
        accept:".drop",
        drop:function(event,ui){
            $("#sortable").sortable('destroy').html(templateHtml);
            $("#sortable").sortable();
            $("#sortable li").addClass("drop").bind('mousedown',function(){
                templateHtml = $("#sortable").html();
            });          
        }
    });

});

    </script>
    <style type="text/css">
    #sortable li{
        clear:both;
        float:left;
    }

    #droppable {
        clear:both;
        height:300px;
        width:400px;
        background-color:#CCC;
    }
    #droppable.active {
        background-color:#CFC;
    }
    #droppable.hovered {
        background-color:#CCF;
    }
    </style>

</head>
<body>

<ul id="sortable">
<li id="one">One</li>
<li id="two">Two</li>
<li id="three">Three</li>
<li id="four">Four</li>
<li id="five">Five</li>
<li id="six">Six</li>
</ul>

<div id="droppable">
Drop Here
</div>

</body>
0
ответ дан 28 November 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: