jQuery UI の Droppable プラグインの accept オプションを使う。 accept オプションは、指定した要素のみを、受け入れるようにするオプション。
実装例(サンプル)
このボックスへドロップすると…
左の①のブロックには反応するが、右の②のブロックには反応しない。
実装例について
jQuery UI の Droppable プラグインだけでなく、Draggable プラグインも使用している。
実装例の動作について
- 「ドラッグ移動ボックス①」と書いてあるボックスを、動かすと、「このボックスへドロップすると…」と書いてあるボックスのスタイルが変化する。
- 「ドラッグ移動ボックス①」と書いてあるボックスを、「このボックスへドロップすると…」と書いてあるボックスの上へ移動すると、「このボックスへドロップすると…」と書いてあるボックスのスタイルが、さらに、変化する。
- 「ドラッグ移動ボックス①」と書いてあるボックスを、「このボックスへドロップすると…」と書いてあるボックスへドロップすると、「このボックスへドロップすると…」という文が、「ドロップしましたね♪」に変わり、ボックスのスタイルも変わる。
- 「ドラッグ移動ボックス②」と書いてあるボックスには一切反応しない。
実装例のソースコード
読み込み
読み込み方は、2種類ある。パスは、それぞれ、アップロードした場所を指定する。
まとめて読み込む場合
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
個別に読み込む場合
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="ui/jquery.ui.draggable.js"></script>
<script type="text/javascript" src="ui/jquery.ui.droppable.js"></script>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="ui/jquery.ui.draggable.js"></script>
<script type="text/javascript" src="ui/jquery.ui.droppable.js"></script>
JavaScript
<script>
<!--
jQuery( function() {
jQuery( '#jquery-ui-draggable, #jquery-ui-draggable-2' ) . draggable();
jQuery( '#jquery-ui-droppable' ) . droppable( {
accept: '#jquery-ui-draggable',
activeClass: 'ui-state-hover',
hoverClass: 'ui-state-active',
drop: function( event, ui ) {
jQuery( this )
.addClass( 'ui-state-highlight' )
.find( 'p' )
.html( 'ドロップしましたね♪' );
}
} );
} );
// -->
</script>
<!--
jQuery( function() {
jQuery( '#jquery-ui-draggable, #jquery-ui-draggable-2' ) . draggable();
jQuery( '#jquery-ui-droppable' ) . droppable( {
accept: '#jquery-ui-draggable',
activeClass: 'ui-state-hover',
hoverClass: 'ui-state-active',
drop: function( event, ui ) {
jQuery( this )
.addClass( 'ui-state-highlight' )
.find( 'p' )
.html( 'ドロップしましたね♪' );
}
} );
} );
// -->
</script>
CSS
<style>
<!--
#jquery-ui-draggable, #jquery-ui-draggable-2 {
width: 100px;
height: 100px;
padding: 0.5em;
float: left;
margin: 10px;
border-radius: 10px;
}
#jquery-ui-droppable {
width: 150px;
height: 150px;
padding: 0.5em;
float: left;
margin: 10px;
border-radius: 10px;
}
-->
</style>
<!--
#jquery-ui-draggable, #jquery-ui-draggable-2 {
width: 100px;
height: 100px;
padding: 0.5em;
float: left;
margin: 10px;
border-radius: 10px;
}
#jquery-ui-droppable {
width: 150px;
height: 150px;
padding: 0.5em;
float: left;
margin: 10px;
border-radius: 10px;
}
-->
</style>
HTML
<div id="jquery-ui-draggable" class="ui-widget-content">
<p>ドラッグ移動ボックス①</p>
</div>
<div id="jquery-ui-droppable" class="ui-state-default">
<p>このボックスへドロップすると…<br />左の①のブロックには反応するが、右の②のブロックには反応しない。</p>
</div>
<div id="jquery-ui-draggable-2" class="ui-widget-content">
<p>ドラッグ移動ボックス②</p>
</div>
<p>ドラッグ移動ボックス①</p>
</div>
<div id="jquery-ui-droppable" class="ui-state-default">
<p>このボックスへドロップすると…<br />左の①のブロックには反応するが、右の②のブロックには反応しない。</p>
</div>
<div id="jquery-ui-draggable-2" class="ui-widget-content">
<p>ドラッグ移動ボックス②</p>
</div>