最初の実行時にドラッグ可能なメッセージ ボックスを作成しました。次のコードは、ユーザーが特定の子 div にカーソルを合わせてテキストをコピーするときに、ドラッグ可能な親 div をドラッグ不可にすることになっています。これは、jQuery を介して正常に実行されます。このコードは、ドラッグ不可の親ノードを再びドラッグ可能にすることも想定しています。しかし、何らかの理由で失敗します。私はSafariコンソールのデバッグを試み、段階的に実行されたようにJavaScriptコードに従いました。クラス名「messageBoxDescriptionBar」の div にカーソルを合わせると、クラス名「messageBox」の親 div はドラッグ不可になり、draggableOff 関数がトリガーされます。しかし、draggableOn 関数がトリガーされ、条件が true であるにもかかわらず、親ノードにカーソルを合わせると、内部のコードが実行され、関数は要素を再びドラッグ可能にしようとします。しかし、その結果、最初の実行時のように、マッサージ ボックスを再びドラッグすることはできなくなります。なぜ?私は何を間違っていますか?ノードの選択が間違っていますか? クラス名で選択してみましたが、結果は変わりませんでした。
function draggableOff(selector) {
var fv__isDraggable = new Boolean;
fv__isDraggable = $(selector).hasClass('ui-draggable');
if(fv__isDraggable) {
$(function() {
$(selector).draggable('destroy');
});
}
}
function draggableOn(selector) {
var fv__isDraggable = new Boolean;
fv__isDraggable = $(selector).hasClass('ui-draggable');
if(!fv__isDraggable) {
$(function() {
$(selector).draggable();
});
}
}
<div style="margin-left: 768px; margin-top: 249px;" onmouseover="draggableOn(this.Node);" class="messageBox messageBoxShaddow ui-draggable">
<div class="messageBoxTitleBar noSelectionNoCursor">Error! Invalid coordinates.</div>
<div class="messageBoxMessageBar noSelectionNoCursor" style="color: red;">
<p> x should be a number.</p>
<p> valid x range is between 0-4.</p>
<p> y should be within map limits.</p>
<p> maximum y allowed is 4.</p></div>
<div onclick="removeNode(this.parentNode);" class="messageBoxButton noSelectionNoCursor">OK</div>
<div onclick="displayNode(this.parentNode.lastChild);" class="messageBoxButton noSelectionNoCursor">Details...</div>
<div onmouseover="draggableOff(this.parentNode);" class="messageBoxDescriptionBar">
<p> 2 errors has happened:</p>
<p> x coordinate is not a number.</p>
<p> y coordinate exceeds map limits.</p></div></div>