さまざまなdivのサイズを変更するために、JqueryUIのサイズ変更可能なプラグインを利用しています。次のHTMLページ(JSが埋め込まれている)について考えてみます。
<html>
<head></head>
<body>
<div id="site">
<div>This element is resizable</div>
<br />
<div style="width: 200px;">This is another resizable element</div>
</div>
<!-- javascript includes -->
<script>
$(function() {
$("#site div").click(function() {
console.log("Clicked");
if($(this).hasClass("selected")) {
$(this).removeClass("selected");
}
else { // Currently not selected, so let's select it
$(this).addClass("selected").resizable({
start: function(event, ui) {
console.log("Start");
},
resize: function(event, ui) {
console.log("Resize");
},
stop: function(event, ui) {
console.log("Stop");
}
});
}
});
});
</script>
</body>
</html>
したがって、このサンプルコードで達成しようとしていることは非常に単純です。ユーザーが「#site」内にネストされたdivをクリックすると、そのdivが「選択済み」になります。したがって、この例では、divのクリックイベントが発生すると、「selected」というCSSクラスがクリックされたdivに追加されます。divをクリックするだけでなく、ユーザーはdivのサイズを変更できます。この問題は、ユーザーが選択したdivのサイズを変更したときに発生します。明らかに、クリックイベントは、ユーザーが最初にdivを選択したときに発生しますが、クリックイベントは、ユーザーがdivの端をクリックしてドラッグしてサイズを変更したときにも発生します。クリックイベントはクリックルーチンを呼び出し、divの選択を解除します。これは私がしたいことではありません。クリックイベントは、サイズ変更可能なすべてのイベントが発生した後にのみ発生します。
それで、私の質問は、ユーザーがdivをクリックして選択できるようにするだけでなく、divのサイズを変更できるが、divをドラッグしてサイズ変更したときに選択を解除できないようにするには、このシナリオをどのように処理できるかということです。あなたの助けに感謝します。前もって感謝します。