19.01.2011, 22:25
|
Аспирант
|
|
Регистрация: 28.08.2010
Сообщений: 57
|
|
draggable stack
Всем привет.
Дополнение draggable к библиотеке jQuery, гарантирует, что если применить метод stack, то тогда обрабатываемый элемент, каждый раз при перетаскивании будет иметь наивысший z-index. Но что-то, как-то не так все на практике. Делал по справочнику. Смотрел примеры в гугле, сделал все как и там, а не работает...
Посмотрите пожалуйста:
index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="lib/jquery/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="lib/jquery/jquery-ui-1.8.8.custom.min.js"></script>
<link rel="stylesheet" type="text/css" href="style/main.css" />
<title>Drag and drop</title>
</head>
<body>
<div id="el-1" class="drag" name="g"></div>
<div id="el-2" class="drag"></div>
<script>
$(document).ready(function() {
$("div#el-1").css("background-color", "silver");
$("div#el-2").css("background-color", "grey");
$('.drag').draggable({
opacity: 0.40,
stack: {
group: '.drag', min: 50
}
});
});
</script>
</body>
</html>
main.css
.drag{
border : 1px solid black;
width : 100;
height : 100;
z-index : 10;
}
PS. Файлы расположены правильно, и все подключено, если что...
PSS. Иначе говоря, нужно чтобы при перетаскивании, одного дива над другим, z-index перетаскиваемого менялся на максимальный.
Последний раз редактировалось DenQ, 19.01.2011 в 22:27.
|
|
20.01.2011, 00:29
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
сделай для начала, чтобы оно запускалось прямо на форуме
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="style/main.css" />
<title>Drag and drop</title>
<style type="text/css">
.drag{
border : 1px solid black;
width : 100;
height : 100;
z-index : 10;
}
</style>
</head>
<body>
<div id="el-1" class="drag" name="g"></div>
<div id="el-2" class="drag"></div>
<script>
$(document).ready(function() {
$("div#el-1").css("background-color", "silver");
$("div#el-2").css("background-color", "grey");
$('.drag').draggable({
opacity: 0.40,
stack: {
group: '.drag', min: 50
}
});
});
</script>
</body>
</html>
Последний раз редактировалось x-yuri, 20.01.2011 в 00:35.
|
|
20.01.2011, 07:37
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="style/main.css" />
<title>Drag and drop</title>
<style type="text/css">
.drag{
border : 1px solid black;
width : 100;
height : 100;
z-index : 10;
}
</style>
</head>
<body>
<div id="el-1" class="drag" name="g"></div>
<div id="el-2" class="drag"></div>
<script>
z=0;
$(document).ready(function() {
$("div#el-1").css("background-color", "silver");
$("div#el-2").css("background-color", "grey");
$('.drag').draggable({
start:function(){this.style.zIndex=z++}
});
});
</script>
</body>
</html>
|
|
20.01.2011, 10:26
|
Аспирант
|
|
Регистрация: 28.08.2010
Сообщений: 57
|
|
Сообщение от x-yuri
|
сделай для начала, чтобы оно запускалось прямо на форуме
|
А смысл? разве кода так много, что обязательно нужен пример? И спасибо, буду знать что, та можно!
Matre, спасибо, конечно, но это "велосипеды", есть конкретный метод и его нужно/можно использовать.
|
|
20.01.2011, 12:29
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
читайте справку по испвольванию этой опции
http://slyweb.ru/jquerydoc/draggable-options.php
сначала нужно установить название группы а потом запускать drag-n-drop
в stack надо писать не селектор,а название группы
|
|
20.01.2011, 13:11
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от DenQ
|
А смысл? разве кода так много, что обязательно нужен пример? И спасибо, буду знать что, та можно!
|
при чем тут пример? Если хочешь, чтобы тебе помогли - максимально упрости задачу. В частности, при запуске на форуме я в консоли вижу следующие ошибки
Код:
|
group[0].style is undefined
var min = parseInt(group[0].style.zIndex) || 0; |
и глянув в код
var o = $(this).data("draggable").options;
var group = $.makeArray($(o.stack)).sort(function(a,b) {
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
var min = parseInt(group[0].style.zIndex) || 0;
видно, что stack должно быть селектором
Matre, ты б на версию глянул
p.s. читайте исходники
|
|
20.01.2011, 16:04
|
Аспирант
|
|
Регистрация: 28.08.2010
Сообщений: 57
|
|
x-yuri, спасибо, вечером гляну, как линь запущу.
|
|
20.01.2011, 22:13
|
Аспирант
|
|
Регистрация: 28.08.2010
Сообщений: 57
|
|
Теперь понятно в чем была ошибка, просто в документации этого не пишут, а если и пишут то как-то по "конячему".
$(document).ready(function() {
$("div#el-1").css("background-color", "silver");
$("div#el-2").css("background-color", "grey");
$("div#el-3").css("background-color", "orange");
$('.drag').draggable({
opacity: "0.4",
stack: ".drag"
});
});
x-yuri, тот код что ты привел, я у себя не нашел. Да и "рыться" в сжатых исходниках как-то в лом. Просто попробовал сделать так же как и раньше просто без group. Единственное, что не нра, так это то, что индекс меняется не по касанию, а при перемещении. В этом сходство с методом Matre. Я то думал оно более продуманное.
Ну что же, ладно, всем спасибо.
Пока.
Последний раз редактировалось DenQ, 20.01.2011 в 22:19.
|
|
|
|