jQuery UI .sortable .on click 移动项目并保留排序功能
jQuery UI .sortable .on click move items and also keep sorting functionality
我有一个工作代码,点击它可以在 2 个列表中来回移动项目。
但是,这会破坏排序功能。
我希望能够使用点击,但也希望能够在必要时通过拖动对项目进行排序,并避免在这种情况下触发 .on 点击。
我该怎么办?
FIddle:
http://jsfiddle.net/72RTz/365/
HTML:
<h5 class="prefix-popover-heading">Group 1</h5>
<!-- IF .prefix_option or .prefix_used -->
<ul id="available_prefixes" class="prefixed_sortable list-inline">
<!-- <li id="disable-selection">{L_PREFIX_BASKET}</li> -->
<li class="click_area">item1</li>
<li class="click_area">item2</li>
<li class="click_area">item3</li>
</ul>
<h5 class="prefix-popover-heading">Group 2</h5>
<div class="group2">
<div id="PrefixBtn" class="input-group-addon fade">
<ul id="used_prefixes" class="prefixed_sortable">
<!-- <li class="placeholder">Drop here</li> -->
<li class="click_area">item4</li>
<li class="click_area">item5</li>
<li class="click_area">item6</li>
</ul>
</div>
</div>
JS:
// Make divs sortable
$("#available_prefixes, #used_prefixes").sortable({
connectWith: '.prefixed_sortable',
items: 'li',
forcePlaceholderSize: true,
placeholder: 'ui-sortable-placeholder',
tolerance: 'pointer',
}).disableSelection()
// lets make it easier and append item on click as well
.on('click', '.click_area', function(){
$(this).appendTo($("#available_prefixes, #used_prefixes").not($(this).closest("ul")));
});
更新:
显然这只是在 FIREFOX 下的问题。在 CHROME 下按预期工作。我该如何解决?
此问题出现在 FireFox 中是因为 click
事件的处理方式不同。我不知道为什么会这样,但是如果您将 click
事件更改为 mouseup
事件,您想要的功能将起作用。在您的上下文中使用 mouseup
事件是可以的,如果事件发生在 "sortable" 区域之外,它不会导致项目移动。
我有一个工作代码,点击它可以在 2 个列表中来回移动项目。 但是,这会破坏排序功能。
我希望能够使用点击,但也希望能够在必要时通过拖动对项目进行排序,并避免在这种情况下触发 .on 点击。
我该怎么办?
FIddle: http://jsfiddle.net/72RTz/365/
HTML:
<h5 class="prefix-popover-heading">Group 1</h5>
<!-- IF .prefix_option or .prefix_used -->
<ul id="available_prefixes" class="prefixed_sortable list-inline">
<!-- <li id="disable-selection">{L_PREFIX_BASKET}</li> -->
<li class="click_area">item1</li>
<li class="click_area">item2</li>
<li class="click_area">item3</li>
</ul>
<h5 class="prefix-popover-heading">Group 2</h5>
<div class="group2">
<div id="PrefixBtn" class="input-group-addon fade">
<ul id="used_prefixes" class="prefixed_sortable">
<!-- <li class="placeholder">Drop here</li> -->
<li class="click_area">item4</li>
<li class="click_area">item5</li>
<li class="click_area">item6</li>
</ul>
</div>
</div>
JS:
// Make divs sortable
$("#available_prefixes, #used_prefixes").sortable({
connectWith: '.prefixed_sortable',
items: 'li',
forcePlaceholderSize: true,
placeholder: 'ui-sortable-placeholder',
tolerance: 'pointer',
}).disableSelection()
// lets make it easier and append item on click as well
.on('click', '.click_area', function(){
$(this).appendTo($("#available_prefixes, #used_prefixes").not($(this).closest("ul")));
});
更新: 显然这只是在 FIREFOX 下的问题。在 CHROME 下按预期工作。我该如何解决?
此问题出现在 FireFox 中是因为 click
事件的处理方式不同。我不知道为什么会这样,但是如果您将 click
事件更改为 mouseup
事件,您想要的功能将起作用。在您的上下文中使用 mouseup
事件是可以的,如果事件发生在 "sortable" 区域之外,它不会导致项目移动。