jQuery UI「Sortable」を利用してマウスドラッグで要素を移動する方法

jQuery UI「Sortable」を利用したHTML要素の入れ替え方法をメモしておきます。

「Sortable」を利用すると<li>タグの要素などをマウスポインタで選択してドラッグすることでその要素の移動が出来るようになります。

jQuery UI「Sortable」の表示手順

今回はjQuery UI「Tabs」と一緒に実装してみます、

  1. jQuery UIのダウンロードページにアクセスして「Sortable」と「Tabs」へチェックしてダウンロードします。バージョンはどれでも構わないです。またThemesも好みのデザインを選択してダウンロードします。今回はDot Luvを選択してます。
  2. ダウンロードしたファイルの内、必要となるのは以下のファイルとなります。
    分類ファイル名 or フォルダ名パス備考
    jsjquery-1.10.2.js.\\jquery-1.10.2.jsjQuery本体
    jsjquery-ui-1.10.4.custom.min.js.\\jquery-ui-1.10.4.custom.min.jsカスタマイズしたjQuery UI
    jssortable_demo.js.\\sortable_demo.jsこのページの実行サンプル用jsファイル
    ※jQuery UIからはダウンロードされません
    cssjquery-ui-1.10.4.custom.css.\\css\\dot-luv\\jquery-ui-1.10.4.custom.cssjQuery UI ThemesからダウンロードしたCSS
    csssortable_demo.css.\\sortable_demo.cssこのページの実行サンプル用CSSファイル
    ※jQuery UIからはダウンロードされません
    画像custom-theme
    ※選択したテーマによりフォルダ名は変わります
    .\\css\\dot-luv\\imagesjQuery UI ThemesからダウンロードしたCSS
    1. HTML
      上記ファイルを指定します。
      <link rel='stylesheet' type='text/css' href='./css/dot-luv/jquery-ui-1.10.4.custom.css' />
      <link rel='stylesheet' type='text/css' href='./css/sortable_demo.css' />
      <script type="text/javascript" charset="utf-8" src="./js/jquery-1.10.2.js"></script>
      <script type="text/javascript" charset="utf-8" src="./js/jquery-ui-1.10.4.custom.min.js"></script>
      <script type="text/javascript" charset="utf-8" src="./js/sortable_demo.js"></script>
      Sortableで動作させる表示部分を定義します。
      <h2 class="demoHeaders">Sortable</h2>
      <div id="tabs">
      	<ul>
      		<li><a href="#tabs-1">タブ1</a></li>
      		<li><a href="#tabs-2">タブ2</a></li>
      	</ul>
      	<div id="tabs-1">
      	    <ul id="sortable1" class="connectedSortable ui-helper-reset">
      	      <li class="ui-state-default">要素A-1</li>
      	      <li class="ui-state-default">要素A-2</li>
      	      <li class="ui-state-default">要素A-3</li>
      	      <li class="ui-state-default">要素A-4</li>
      	      <li class="ui-state-default">要素A-5</li>
      	    </ul>
      	</div>
      	<div id="tabs-2">
      	    <ul id="sortable2" class="connectedSortable ui-helper-reset">
      	      <li class="ui-state-default">要素B-1</li>
      	      <li class="ui-state-default">要素B-2</li>
      	      <li class="ui-state-default">要素B-3</li>
      	      <li class="ui-state-default">要素B-4</li>
      	      <li class="ui-state-default">要素B-5</li>
      	    </ul>
      	</div>
      </div>
  3. CSS
    #sortable1 li, #sortable2 li {
    	margin: 0 5px 5px 5px;
    	padding: 5px;
    	font-size: 1.2em;
    	width: 120px;
    }
  4. jQuery
    jQuery(function() {
        jQuery("#sortable1, #sortable2").sortable().disableSelection();
        var $tabs = jQuery("#tabs").tabs();
        var $tab_items = jQuery("ul:first li", $tabs).droppable({
          accept: ".connectedSortable li",
          hoverClass: "ui-state-hover",
          drop: function(event, ui) {
            var $item = jQuery(this);
            var $list = jQuery($item.find("a").attr("href")).find(".connectedSortable");
            ui.draggable.hide("slow", function() {
              $tabs.tabs("option", "active", $tab_items.index($item));
              jQuery(this).appendTo($list).show("slow");
            });
          }
        });
    });
    

実行サンプル

  • 要素A-1
  • 要素A-2
  • 要素A-3
  • 要素A-4
  • 要素A-5
  • 要素B-1
  • 要素B-2
  • 要素B-3
  • 要素B-4
  • 要素B-5
0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
目次
0
あなたの考えが大好きです、コメントしてください。x