我正在排序一个对象列表,其中一些是常规对象,其中一些是其他对象的容器.
使用句柄排序工作正常,除非我向容器添加新对象,刷新后无法识别.
我有以下HTML:
<button>add another option</button>
<div class="con">
<div class="ui-state-highlight"><span class="handle">handle</span> Item 1</div>
<div class="ui-state-highlight"><span class="handle">handle</span> Item 2</div>
<div class="ui-state-highlight"><span class="handle">handle</span> Item 3</div>
<div class="subthing">
<span class="handle">handle</span>
<div> <span class="handle">subhandle</span> subitem</div>
<div> <span class="handle">subhandle</span> subitem</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
和脚本:
$('button').click(function() {
var x = $('<div class="ui-state-highlight"><span class="handle">handle</span> newthing</div>');
x.appendTo('.con')
$(".con").sortable('refresh')
});
var container = $(".con");
container.sortable({
handle: container.children().children(".handle")
});?
Run Code Online (Sandbox Code Playgroud)
如上面的代码所示,如果添加新项,则无法使用其余元素对其进行排序.我知道如果我说handle属性是.handle,它会这样做,但我不希望子句柄成为可排序的一部分.
你需要的是:
container.sortable({
handle: '> .handle'
});?
Run Code Online (Sandbox Code Playgroud)
看看这个:http://jsfiddle.net/hQsjD/
这是仅仅捕获直接的.handle孩子的>标志.
handle参数是一个字符串选择器而不是实际元素是很重要的,因为在调用refresh时它们不会刷新.
| 归档时间: |
|
| 查看次数: |
8607 次 |
| 最近记录: |