Heim > Web-Frontend > js-Tutorial > jquery implementiert Drag-Sortierung von Elementen (Code angehängt)

jquery implementiert Drag-Sortierung von Elementen (Code angehängt)

php中世界最好的语言
Freigeben: 2018-04-26 09:28:22
Original
2195 Leute haben es durchsucht

Dieses Mal werde ich Ihnen JQuery zum Implementieren der Element-Drag-Sortierung (mit Code) vorstellen. Was sind die Vorsichtsmaßnahmen für JQuery zum Implementieren der Element-Drag-Sortierung?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>jquery学习-jquery对元素拖动排序</title> 
<style type="text/css"> 
#show 
{ 
color: Red; 
} 
#list 
{ 
cursor: move; 
width: 300px; 
} 
#list li 
{ 
border: solid 1px yellow; 
float: left; 
list-style-type
: none; 
margin-top: 10px;
Nach dem Login kopieren


Im Folgenden werden wir diese Funktion Schritt für Schritt implementieren.

<span id="show">
<p>
  <input id="check" type="checkbox" />
</p>
<p>
  <input type="hidden" id="orderlist" />
  <ul id="list">
    <asp:Repeater ID="rptOrder" runat="server">
    <ItemTemplate>
      <li id="<%#Eval("ID") %>" title="<%#Eval("OrderID") %>">
        <img alt="img" src="<%#Eval("Link") %>" />
      </li>
    </ItemTemplate>
    </asp:Repeater>   
  </ul>
</p>
Nach dem Login kopieren

verfügt über ein Optionsfeld. Wenn der Benutzer es auswählt, wird die Sortierung der Daten in der Datenbank geändert, wenn das Bild gezogen wird. Das ausgeblendete Feld speichert die ursprüngliche Reihenfolge der Bilder. ul zeigt die Bilderliste an.

Um es einfacher zu sehen, habe ich einen kleinen Stil hinzugefügt:

var show = jQuery("#show"); //输出提示 
var orderlist = jQuery("#orderlist"); //原顺序 
var check = jQuery("#check"); //是否更新到数据库
Nach dem Login kopieren

Speichern Sie zunächst die häufig verwendeten Selektoren, damit sie später prägnanter aufgerufen werden können. Damit wird sicherlich jeder kein Problem haben. ^_^

//保存原来的排列顺序 
var order = []; 
list.children("li").each(function() { 
  order.push(this.title); //原排列顺序保存在title,得到后更改title 
  jQuery(this).attr("title", "你可以拖动进行排序"); 
}); 
orderlist.val(order.join(&#39;,&#39;));
Nach dem Login kopieren

Speichern Sie die ursprüngliche Sortierreihenfolge im ausgeblendeten Feld. Hier wird die push()-Methode des Arrays verwendet, die darin besteht, den Titel (ursprüngliche Anordnungsreihenfolge) in jedem Li von ul zum Array hinzuzufügen. Schließlich wird die Methode „join()“ verwendet, um die ursprüngliche Anordnungsreihenfolge abzurufen und eine Zeichenfolge zurückzugeben. Das Sortierreihenfolgeformat ist jetzt 1,2,3.

//ajax更新 
var Update = function(itemid, itemorder) { 
  jQuery.ajax({ 
    type: "post", 
    url: "update.aspx", 
    //id:新的排列对应的ID,order:原排列顺序
    data: { id: itemid, order: orderlist.val() },  
    beforeSend: function() { 
      show.html("正在更新"); 
    }, 
    success: function() { 
      show.html("更新成功"); 
    } 
  }); 
};
Nach dem Login kopieren

Als nächstes trennen Sie den Ajax-Update-Block. Dadurch wird das Programm sauberer und es gibt in diesem Bereich nichts Neues.

//调用ajax更新方法 
var Submit = function(update) { 
  var order = []; 
  list.children("li").each(function() { 
    order.push(this.id); 
  }); 
  var itemid = order.join(&#39;,&#39;); 
  //如果单选框选中,则更新表中排列顺序 
  if (update) { 
    Update(itemid); 
  } 
  else { 
    show.html(""); 
  } 
};
Nach dem Login kopieren

Ähnlich wie beim Abrufen der Sortierreihenfolge wird die ID in einen String zusammengestellt und an die Update()-Methode übergeben. Die Parameteraktualisierung in der Funktion hängt davon ab, ob das Kontrollkästchen aktiviert ist.

//执行排列操作 
list.sortable({ 
  opacity: 0.7, 
  update: function() { 
    Submit(check.attr("checked")); 
  } 
});
} 
</style> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.js"></script> 
<script type="text/javascript"> 
$(document).ready(function () { 
//保存常用选择器 
var list = $("#list"); //ul 
var show = $("#show"); //输出提示 
var orderlist = $("#orderlist"); //原顺序 
var check = $("#check"); //是否更新到数据库 
//保存原来的排列顺序 
var order = []; 
list.children("li").each(function () { 
order.push(this.title); //原排列顺序保存在title,得到后更改title 
$(this).attr("title", "你可以拖动进行排序"); 
}); 
orderlist.val(order.join()); 
//执行排列操作 
list.sortable({ 
axis: &#39;y&#39;,//只能横向拖动 
opacity: 0.7,// 移动时的透明度 
update: function () {//当排序动作结束时且元素坐标已经发生改变时触发此事件。 
Submit(check.attr("checked")); 
} 
}); 
//ajax更新 
var Update = function (itemid, itemorder) { 
$.ajax({ 
type: "post", 
url: "update.aspx", 
data: { id: itemid, order: orderlist.val() }, //id:新的排列对应的ID,order:原排列顺序 
beforeSend: function () { 
show.html("正在更新"); 
}, 
success: function (req) { 
if (req == "100") { 
show.html("更新成功"); 
} 
else if (req == "001") { 
show.html("失败,请稍后再试"); 
} 
else { 
show.html("参数不全"); 
} 
} 
}); 
}; 
//调用ajax更新方法 
var Submit = function (update) { 
var order = []; 
list.children("li").each(function () { 
order.push(this.id); 
}); 
var itemid = order.join(&#39;,&#39;); 
//如果单选框选中,则更新表中排列顺序 
if (update) { 
Update(itemid); 
} 
else { 
show.html(""); 
} 
}; 
}); 
</script> 
</head> 
<body> 
<form method="post" action="jquery-drag-order-sort.aspx" id="form1"> 
<p class="aspNetHidden"> 
<input type="hidden" name="VIEWSTATE" id="VIEWSTATE" value="/wEPDwUJNDc3MzMwNjM4D2QWAgIBD2QWAgIBDxYCHgtfIUl0ZW1Db3VudAIDFgZmD2QWAmYPFQMCMTQBMSdodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvYmFpZHVfbG9nby5naWZkAgEPZBYCZg8VAwIxMwEyL2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS5oay9pbWFnZXMvc3Jwci9sb2dvM3cucG5nZAICD2QWAmYPFQMCMTYBMyxodHRwOi8vaW1nMy5jbi5tc24uY29tL2ltYWdlcy8wODA5L2xvZ28xLnBuZ2RkDx67fZ2swhZiUjvFaE+ziATRZTct5b77PuWvqXLCUlg=" /> 
</p> 
<span id="show"></span> 
<h1>jQuery对元素拖动排序</h1> 
<p>拖动时同时更新数据库数据:<input type="checkbox" id="check" /></p> 
<p> 
<input type="hidden" id="orderlist" /> 
<ul id="list"> 
<li id="14" title="1"> 
<img alt="img" src="http://www.baidu.com/img/baidu_logo.gif" /></li> 
<li id="13" title="2"> 
<img alt="img" src="http://www.google.com.hk/images/srpr/logo3w.png" /></li> 
<li id="16" title="3"> 
<img alt="img" src="http://img3.cn.msn.com/images/0809/logo1.png" /></li> 
</ul> 
</p> 
</form> 
</body> 
</html>
Nach dem Login kopieren

Führen Sie abschließend den Anordnungsvorgang durch. Der Hintergrundteil ist die Aktualisierung der aktuellen ID entsprechend der ursprünglichen Anordnungsreihenfolge. Ich glaube, jeder ist damit vertraut.

Es ist ersichtlich, dass, wenn kein Datenbankvorgang ausgeführt wird, das Plug-in nur sorttable aufrufen muss, um das Ziehen von Elementen abzuschließen.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Implementierung der Tabellensortierung mit sortElements

jquery implementiert die Tabellensortierung + real -Zeitsuchfunktion

Das obige ist der detaillierte Inhalt vonjquery implementiert Drag-Sortierung von Elementen (Code angehängt). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage