2010-11-01 3 views
8

Возможно ли иметь возможность сортировки элементов, но все же разрешить пользователям копировать/вставлять текст внутри элементов?Sortable w/Selectable Text

<div class="sortable"> 
    <div class="pseudo-sortable">Foo</div> 
    <div class="pseudo-sortable">Bar</div> 
    <div>other stuff that i don't care if a user 
     can't copy (maybe images or buttoms)</div> 
</div> 

я могу легко сделать:

$('.sortable').sortable({cancel: '.pseudo-sortable'}); 

Это позволит мне выбрать текст в браузере и копировать/вставить, если я хочу. Тем не менее, это также делает так, что человек не может перетаскивать. Поэтому я думаю, что я хотел бы начать с отмены, но если мышь на определенном расстоянии за пределами контейнера, то псевдо-сортировки больше не будут отменены. Имеет ли это смысл?

Если это невозможно, последним вариантом будет применение триггера, который переключает контейнеры между сортируемыми и не сортируемыми, чтобы они могли выбирать текст, но я бы предпочел минимизировать клики.

ответ

15

Как насчет ввода текста в <span>?

HTML

<ul id="sortable"> 
    <li><span>Item 1</span></li> 
    <li><span>Item 2</span></li> 
    <li><span>Item 3</span></li> 
    <li><span>Item 4</span></li> 
    <li><span>Item 5</span></li> 
    <li><span>Item 6</span></li> 
    <li><span>Item 7</span></li> 
</ul> 

JQuery

$("#sortable").sortable({ 
    revert: true, 
    cancel: "#sortable li span" 
}); 

Попробуйте здесь: http://jsfiddle.net/6uXx8/

+0

Итак, это позволяет выбирать текст, но не перетаскивать. Я бы хотел, чтобы он был выбран, но он превращается в draggable после определенного расстояния (~ 100px) за пределами контейнера. – vol7ron

+0

спасибо, это то, что мне нужно! –

+0

То, что я хотел, было нелегко, поэтому я думаю, это был бы лучший ответ – vol7ron

1

Попробуйте добавить handle. Идея состоит в том, что вы можете начать перетаскивание элемента из дескриптора, что может быть, например, значком внутри элемента.

+0

Я знаю, что это возможно, но я хочу, чтобы весь контент, текст, включенный, чтобы быть перетаскиваемым , Только, я хочу, чтобы текст также копировался/вставлялся. Таким образом, применение минимального расстояния до того, как элемент станет перетаскиваемым, если он захвачен текстом. – vol7ron

+0

Вы хотите много;) но серьезно, я stronly предлагаю вам решить, можно ли выбрать текст или перетаскивать; делать оба кажется неудобным, и пользователи будут путать ИМО. – cambraca

+0

Да, это что-то более продвинутое, чтобы уменьшить количество щелчков мыши. В настоящее время у меня есть кнопка блокировки/разблокировки, которая переключает класс между draggable и non-draggable, который работает. Просто пытаюсь уменьшить эти мини-кнопки и сделать все лучше. – vol7ron