javascript - 如何让父DIV的子DIV充当父DIV

标签 javascript jquery html jquery-ui

我有一个巨大的问题需要解决。

所以我有这个窗口(父 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 真正拖动窗口及其本身,只需将光标放在标题上就可以使窗口移动。

提前致谢。

最佳答案

您需要使用 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=\"";

关于javascript - 如何让父DIV的子DIV充当父DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572354/

相关文章:

javascript - 同一类的多个实例的事件处理——需要说明

javascript - 在单选按钮中打开新选项卡窗口?

javascript - 解析 '..."许可证“: "ISC", 附近时,JSON 中位置 351 处的意外标记}

javascript - 无法访问指令中的 AngularJS 属性

javascript - 获取不带字符串前缀的json值

javascript - 使用 jQuery UI "Accordion and Droppable"

javascript - 避免在 Chrome 开发者工具中单步执行 javascript 文件?

javascript - Angular JS 中的按钮单击事件

javascript - 如何限制定期向其中添加消息的 DIV 中的文本量?

html - 在表格行中对齐图像和文本