การใช้งาน drop ฬนการรับ element ที่ใช้ drag เพื่อทำ event drop ด้วย jquery UI

jQuery & Ajax Knowledge ความรู้เกี่ยวกับ Javascript , jQuery และ Ajax

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
ewqolf
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 621
ลงทะเบียนเมื่อ: 14/11/2022 9:26 am

การใช้งาน drop ฬนการรับ element ที่ใช้ drag เพื่อทำ event drop ด้วย jquery UI

โพสต์ที่ยังไม่ได้อ่าน โดย ewqolf »

การใช้งาน drop ฬนการรับ element ที่ใช้ drag เพื่อทำ event drop ด้วย jquery UI นั้นเป็นเหมือนกับการที่เราทำ event onclick ในแบบปกติๆที่เราเคยทำกันครับเพียงแต่ว่ามันจะแตกต่างกันตรงที่ว่า การทำ drop นั้นเราจะใช้งานร่วมกันกับ draggable นะครับเนื่องจากว่าตัว drop นั้นมาจาก droppable ที่เอาไว้ใช้งานร่วมกับ drag ในการรับว่าเรา drag element มาวางทับหรือเอาออก เราก็สามารถให้ทำ function อะไรต่างๆได้ครับ โดยโค้ดที่ใช้เขียนในกระทู้นี้จอ้างอิงมาจากกระทู้ การสอนใช้ drag ในกระทู้ที่ผมเขียนไปแล้วในอดีตนะครับ

โดยเหมือนเดิมครับเราจะเริ่มต้นจากการเขียนประกาศที่หัวก่อนนะครับว่าเราจะใช้งาน ตัวของ jquery UI ในการเขียนในไฟร์นี้ด้วยโค้ดดังนี้

โค้ด: เลือกทั้งหมด

<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
หลังจากที่เราได้ทำการประกาศที่หัวแล้วจากนั้นเราจะทำการสร้าง element ขึ้นมา 2 ตัวครับนั้นก็คือ สีเหลี่ยม 2 อัน ครับที่ใช้สีแตกต่างกันดังนี้

โค้ด: เลือกทั้งหมด

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
	<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
	<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
	<script src="static/jquery-ui.js" type="text/javascript"></script>
	<title>Document</title>
</head>
<body>
	<div class="drag" style="background-color: rgb(84, 152, 216); width:100px; height:100px"></div>
	<div class="drop" style="background-color: red; width:200px; height:200px"></div>
	
</body>
</html>
จากโค้ดข้างต้นนี้เราก็จะได้สีเหลี่ยมขึ้น 2 อันนั้นก็คือ สีเหลี่ยมอันเล็กสีฟ้า และสีเหลี่ยมอันใหญ่สีแดง ดังภาพ
กล่องสีเหลี่ยมสีฟ้าและสีแดง
กล่องสีเหลี่ยมสีฟ้าและสีแดง
กล่องสีเหลี่ยมสีฟ้าและสีแดง.png (1.47 KiB) Viewed 1308 times
จากนั้นเราจะต้องใส่โค้ดทางฝั่ง Javascript สำหรับการกำหนดการ drag and drop ด้วยโค้ด

โค้ด: เลือกทั้งหมด

$(".drag").draggable();
$( ".drop" ).droppable();
จากนั้นเราก็จะสามารถใช้เมาส์ลากสีเหลี่ยมสีฟ้าได้แต่ว่าเราเอาไปวางที่กล่องสีฟ้ายังไงก็ไม่มีอะไรเกิดขึ้น
ขยับสีเหลี่ยมสีฟ้า
ขยับสีเหลี่ยมสีฟ้า
ขยับสีเหลี่ยมสีฟ้า.gif (49.91 KiB) Viewed 1308 times
นั้นก็เพราะว่าเรายังไม่ได้เขียน event ว่าถ้าหากว่าเอามาวางแล้วจะให้ทำอะไรถ้าเอาออกจะให้ทำอะไรนั้นเราจะต้องมากำหนดเองซึ่งผมจะยกตัวอย่างการเปลี่ยนสีของ element ครับ ด้วยโค้ด

โค้ด: เลือกทั้งหมด

$(".drag").draggable();
$( ".drop" ).droppable(
{
  drop: function(event, ui) {
    $(this).css('background', 'rgb(0,200,0)');
  },
  over: function(event, ui){
	$(this).css('background', 'rgb(0,200,200)');
  },
  out: function(event, ui){
	$(this).css('background', 'red');
  }
});
ผลลัพธ์ของการใช้ drag and drop
ผลลัพธ์ของการใช้ drag and drop
ผลลัพธ์ของการใช้ drag and drop.gif (38.83 KiB) Viewed 1308 times
เราก็จะได้ผลลัพธ์ตามที่ gif ข้างต้นนั้นได้แสดงออกมานะครับนั้นก็คือ drop นั้นก็คือส่วนของการที่เราลากเมาส์มาปล่อย element ที่ drop element แล้วจะทำฟังก์ชั่นที่จะทำให้สีเปลี่ยนเป็นสีฟ้า และ over คือกรณีที่เราลาก element มาบน drop แต่ยังไม่ปล่อยเมาส์ ก็จะเป็นสีฟ้าอ่อน และถ้าเป็น out นั้นก็คือกรณีที่เราเอาตัว drag นั้นออกจากพื้นที่ drop ก็จะเปลี่ยนเป็นสีแดงครับ

ซึ่งการใช้งาน drag and drop นั้นเราสามารถใช้ประโยชน์ได้มากมายเลยครับมันจะเป็นอีกหนึ่งฟีเจอร์ที่จะใช้งานได้บนเว็บไซต์ของเราได้แล้วมีประโยชน์มากๆแน่นอนครับถ้าหากว่าเราได้ทำการเรียนรู้เอาไว้เพราะว่าฟีเจอร์บางอย่างที่เราต้องการใช้นั้นมันไม่เหมาะสมกับการทำเป็นเพียงแค่ปุ่มกดเช่นเราอยากจะทำเกมปริศนาภาพ เราก็ไม่ได้คงจะไม่ใช้ระบบที่ใช้สำหรับการกดปุ่มในการเอาภาพนั้นไปไว้ให้ถูกดที่ใช่ไหมล่ะครับ นั้นก็เป็นอีก 1 ไอเดียครับที่เราจะเอาคำสั่งหรือระบบนี้มาใช้งานในเว็บไซต์ของเราได้

อ้างอิง
https://www.geeksforgeeks.org/jquery-ui-draggable-and-droppable-methods/
https://jqueryui.com/droppable/
https://www.mindphp.com/en/online-tutorials/joomla-extension-dev-eng-2/3008-chapter-12-jquery-drag-and-drop.html
คนจะตายเมื่อถูกฆ่า...ขอบคุณครับ
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 12