現在、添付されている要素を移動できるドラッグ アンド ドロップ要素を作成しようとしています。すべてが動的に作成されています。ネストされた関数呼び出し内から css を変更できないという問題が繰り返し発生しています。
jQuery (動かない)
//Drag begin
var dragX;
var dragY;
var mouseDown = false;
var dragIcon = $('<span>')
.css({
'z-index' : '11',
'position' : 'absolute',
'width' : '300px',
'height' : '140px',
'left' : '0px',
'top' : '20px'
})
.addClass('unselectable')
.mousedown(function(){
mouseDown = true;
$(this).mousemove(function(){
if(mouseDown == true){
var dragX = getCurrentMouseX();
var dragY = getCurrentMouseY();
//Don't allow ideas to be created too close to the border of the page
if(dragX < 260){
dragX = 260;
}else if(dragX > window.innerWidth - 260){
dragX = window.innerWidth - 260;
}
if(dragY < 160){
dragY = 160;
} else if(dragY > window.innerHeight - 450){
dragY = window.innerHeight - 450;
}
$(this).css({
'left' : dragX - 150,
'top' : dragY - 81
});
}
})
})
.mouseout(function(){
mouseDown = false;
})
.mouseup(function(){
mouseDown = false;
});
私は正しく動作する JavaScript で関数を書きましたが、それを jQuery に変換しようとしています。以下は、機能する JavaScript 関数です。
JavaScript (動作中)
//Drag begin
var dragX;
var dragY;
var mouseDown = false;
//TODO: An icon which can be used to drag the cloud around
var dragIcon = document.createElement('span');
dragIcon.style.zIndex = "11";
dragIcon.style.position = "absolute";
dragIcon.style.width = "300px";
dragIcon.style.height = "140px";
dragIcon.setAttribute('class', 'unselectable');
dragIcon.style.left = "0px";
dragIcon.style.top = "20px";
dragIcon.unselectable = "on";
dragIcon.style.MozUserSelect = "none";
dragIcon.onselectstart = function() {return false;}
dragIcon.onmousedown = function(){
mouseDown = true;
dragIcon.onmousemove = function(){
if(mouseDown == true){
var dragX = getCurrentMouseX();
var dragY = getCurrentMouseY();
if(dragX < 260){
dragX = 260;
}else if(dragX > window.innerWidth - 260){
dragX = window.innerWidth - 260;
}
if(dragY < 160){
dragY = 160;
} else if(dragY > window.innerHeight - 450){
dragY = window.innerHeight - 450;
}
cloudStyle.left = dragX - 150 + "px"; //-150 to make up for the position of the drag icon
sunRay.style.left = dragX - 220 + "px";
cloudStyle.top = dragY - 81 + "px"; //-85 to make up for the positioning
sunRay.style.top = dragY - 250 + "px";
}
}
}
dragIcon.onmouseout = function(){
mouseDown = false;
}
dragIcon.onmouseup = function(){
mouseDown = false;
}
どこが間違っているのか、間違ったアプローチを取っているのかを指摘していただけますか。ありがとう。