我有一个巨大的问题需要解决。
所以我有这个窗口(父Div)和标题(子Div)。
我正在使用jQuery和jQuery UI完成可拖动的窗口。但是,使整个窗口移动的唯一方法是执行$('#parent').draggable();
,并且尝试在#child上执行此操作将破坏窗口。这样,唯一可拖动的元素将是标题(子div),窗口(父div)将保持不变。
展示柜(该窗口只能由标题栏拖动): This is not supposed to be happening but it does, because function acts on parent div and not child div
index.php :
<?php CreateWindowFn('Log into system', '<button>Log in</button>', 'sys_login_container', 'login_caption', 320, 500); ?>
// Returns: <div class="window" onload="$('#sys_login_container').draggable();" id="sys_login_container" style="width:320px !important;height:500px !important"><div class="caption" id="login_caption">Log into system</div><div class="text"><button>Log in</button></div></div>
CreateWindowFn.php :
function CreateWindowFn($caption, $function, $windowid, $captionid, $width, $height) {
if (empty(null)) {
$text = $function;
echo "<div class=\"window\" onload=\"$('#$windowid').draggable();\" id=\"$windowid\" style=\"";
if (!empty($width)){echo "width:$width" . "px !important;";}else{;;}
if (!empty($height)){echo "height:$height" . "px !important";}else{;;}
echo "\"><div class=\"caption\" id=\"$captionid\">$caption</div><div class=\"text\">$text</div></div>";
return (bool) 1;
} else {
return (bool) 0;
}
}
interface.css [ .window ]:
.window {
padding:0px;
margin:0px;
width:auto;
height:auto;
background:#fff;
border:1px solid #000;
color:#000;
box-sizing:border-box;
}
.window .caption {
background:#000;
height:16px;
color:#fff;
width:100%;
border:1px solid #fff;
text-align:center;
font-size:16px;
box-sizing:border-box;
cursor:default;
}
.window .caption::selection {
background:none;
}
.window .text {
background:none;
background-color:none;
border-top:1px solid #000;
width:auto;
height:auto;
padding:-1px 2px 2px 2px;
box-sizing:border-box;
}
我需要一种使子div实际拖动窗口及其本身的方法,只有将光标置于标题上才能使窗口可移动。
谢谢。
答案 0 :(得分:2)
您需要使用jQuery UI handle
选项来指定允许拖动哪些元素。 jQuery UI网站has a page。
将元素设置为可拖动时,您会将{ handle: "selector" }
作为参数传递给draggable()
。就您而言,您将通过{ handle: ".caption" }
。
要在PHP中创建窗口,您的CreateWindowFn函数中的相关行将更改为:
echo "<div class=\"window\" onload=\"$('#$windowid').draggable({ handle: '.caption' });\" id=\"$windowid\" style=\"";