【发布时间】:2016-02-29 19:07:22
【问题描述】:
我有一个工作代码,点击时可以来回移动 2 个列表中的项目。 但是,这会破坏排序功能。
我希望能够使用点击,但也能够在必要时通过拖动来对项目进行排序,并避免在这种情况下触发 .on 点击。
我该怎么办?
小提琴: 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 下按预期工作。我该如何解决?
【问题讨论】:
-
我看不出问题出在哪里?我可以点击移动项目,排序功能仍然有效。
-
尝试释放点击...它会返回列表...如果您对其进行排序,这不是预期的行为。预期的行为应该是:单击以向后移动,如果我按住单击则作为默认排序,因此拖放和排序..明白我的意思吗?
-
如果我放开一个项目并且它仍在其原始组中,我希望它会返回,它确实如此。如果我放开相邻组中的一个项目,它会正确添加到另一个组,这也是预期的行为。
-
哦,这太奇怪了。这是正确的行为,但仅限于 CHROME。试试火狐。这是不正确的。这怎么可能?他们如何以两种方式解释代码?我如何解决它 ? :-/
-
是的。它在 Firefox 中肯定被破坏了。不经过调查就不确定问题出在哪里。
标签: javascript jquery jquery-ui firefox jquery-ui-sortable