Rai*_*Son 43 javascript jquery jquery-ui jquery-ui-sortable
我正在使用jQuery Sortable.我有这样的HTML设置:
<ul id='plan'>
<li class='item'>1</li>
<li class='item'>2</li>
<li class='item'>3</li>
<li class='item'>4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想以编程方式将其移动<li>到不同的位置.我可以使用以下JS实现这一点:
$("#plan li:eq(1)").insertAfter($("#plan li:eq(2)"));
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它不会触发可更改或更新等可排序事件.我有一个在sortable的update事件上运行的函数,但用JS移动li不会触发它.
有谁知道如何触发可排序的更新事件?
Luk*_*uke 15
$("selector").trigger("sortupdate");
Run Code Online (Sandbox Code Playgroud)
你可能必须传入第二个参数作为放置事件的函数和ui,事件不如ui重要
用于事件触发的可排序窗口小部件的内部代码如下所示
this._trigger("update", event, this._uiHash(this));
Run Code Online (Sandbox Code Playgroud)
所以你可能想要做以下
function triggerUpdateFor(selector) {
var widget = $(selector).sortable("widget");
if (widget) widget._trigger("update", null, widget._uiHash(widget));
}
Run Code Online (Sandbox Code Playgroud)
optionsortable中的方法(检索其回调)由于每个事件回调都被定义为可排序窗口小部件的一个选项,因此可以通过调用相应事件回调选项的选项方法来检索它(此示例使用回调):update
$('#plan').sortable({
update: function(event, ui) {
// Do something...
}
});
$('#plan').sortable('option', 'update'); // returns function
Run Code Online (Sandbox Code Playgroud)
更新回调需要两个参数,eventa和a ui object.该event可设置为null,ui object与所有属性的定义需求update callback预计:
$('#plan').sortable('option','update')(
null,
{
item: $('<li>new item</li>').appendTo($('#plan'))
}
);
Run Code Online (Sandbox Code Playgroud)
本工程为您定义的所有事件回调(如receive,change等).
小智 5
该trigger方法接受额外的参数,因此如果您需要ui参数,则需要自己传递.但是你通常只想要目标ui.item,在这种情况下,你知道它是什么:
var sortupdate = function (event, ui) {
// do something with ui.item
};
var $plan = $("#plan");
$plan.sortable({
update: sortupdate
});
$plan.on("sortupdate", sortupdate); // sortupdate is not automatically bound
var $item = $("#plan li:eq(1)");
$item.insertAfter($("#plan li:eq(2)"));
$plan.trigger("sortupdate", { item : $item });
Run Code Online (Sandbox Code Playgroud)
演示:
| 归档时间: |
|
| 查看次数: |
23752 次 |
| 最近记录: |