我正在使用CodeIgniter和jQuery UI Sortable小部件来更改我的菜单列表位置。
例如,如果我的菜单列表是这样的:
<li>menu 1</li>
<li>menu 2</li>
<li>menu 3</li>
<li>menu 4</li>
我想将第一个菜单放在第二个菜单下,然后让它停留在那里。
但是我对jQuery有点困惑。
这就是获取列表元素的原因:
<ul id="sortable">
<?php foreach ($rows as $r)
{
echo '
<li id="sort_'.$r->pid.'" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
' . $r->page_name . '
</li>';
}
?>
</ul>
和jquery:
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight",
opacity: 0.6,
update: function(event, ui) {
var info = $(this).sortable("serialize");
alert(info);
}
});
$( "#sortable" ).disableSelection();
我设法提醒结果阵列。
现在我不想让任何人为我写这个,只是提示如何使用ajax来进行更新。
答案 0 :(得分:4)
我认为您可以在更新方法中使用$ .ajax(..)。
http://api.jquery.com/jQuery.ajax/
$.ajax({
url: "submit.php",
data: info,
context: document.body,
success: function(){
// success
}
});
我只是检查信息已经序列化,所以这应该工作。您可以根据提交类型添加method
属性(发布,获取)。
答案 1 :(得分:3)
首先感谢Kamil Lach的暗示,我设法做到了
这是我的代码,也许是某人为此使用了
在我的控制器中创建了一个函数并将模型加载到其中
function sort_items()
{
$this->load->model("admin/pages_model");
$this->pages_model->sort_insert();
}
模型
function sort_insert()
{
foreach($this->input->post("sort") as $p => $id)
{
$this->db->query(" UPDATE c_pages SET sort = ".$p." WHERE pid = ".$id." ");
}
}
$ p vaiable是空头头寸,id是菜单ID
和jquery
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight",
opacity: 0.6,
update: function(event, ui) {
var info = $(this).sortable("serialize");
$.ajax({
type: "POST",
url: "http://localhost/frame/admin/pages/sort_items",
data: info,
context: document.body,
success: function(){
// alert("cool");
}
});
}
});
$( "#sortable" ).disableSelection();
我将url传递给我的控制器函数,我的加载了更新模型
和视图文件
<?php if($rows) { ?>
<ul id="sortable">
<?php foreach ($rows as $r)
{
echo '
<li id="sort_'.$r->pid.'" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
' . $r->page_name . '
</li>';
}
?>
</ul>
<?php } else
{
echo "There are no pages created yet";
}
?>
再次感谢你的提示卡米尔拉赫