Как заставить Child DIV Parent DIV выступать в роли PIV DIV для родителей - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть огромная проблема, для которой мне нужно исправить.

Так что у меня есть это окно (родительский Div) и подпись внутри (дочерний Div).
И я использую jQuery и jQuery UIвыполнить перетаскиваемое окно.Но единственный способ заставить все окно двигаться - это сделать $('#parent').draggable();, и попытка сделать это в #child сломает окно.Тогда единственным перетаскиваемым элементом будет заголовок (дочерний элемент div), и окно (родительский элемент div) останется на месте.

Showcase ( Предполагается, что окно можно перетаскивать только с помощью панели заголовков ): Это не должно происходить, но происходит, потому что функция действует на родительский div, а не на дочерний 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 действительно перетаскивал окно и сам по себе, только удерживая курсор на заголовке, нужно сделать окно подвижным.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 сентября 2018

Вам необходимо использовать опцию jQuery UI handle, чтобы указать, какие элементы разрешено перетаскивать.На веб-сайте jQuery UI есть страница .

Когда вы устанавливаете элемент как перетаскиваемый, вы передаете { handle: "selector" } в качестве аргумента draggable().В вашем случае вы должны передать { handle: ".caption" }.

Чтобы создать ваше окно в PHP, соответствующая строка в вашей функции CreateWindowFn будет изменена на:

echo "<div class=\"window\" onload=\"$('#$windowid').draggable({ handle: '.caption' });\" id=\"$windowid\" style=\"";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...