Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 14

Drag & Drop не могу получить атрибут

04.08.2011, 11:33. Показов 2025. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пользую jquery-ui

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$(".product").draggable({
 
containment: 'document',
opacity: 0.6,
revert: 'invalid',
helper: 'clone',
zIndex: 100
 
});
 
$("div.content.drop-here").droppable({
accept: ".product",
drop:
function(e, ui)
{
var param = $(ui.draggable).attr("id");
 
addlist(param);
}
 
});
Объект который я тяну выглядит так:
HTML5
1
<div class="product" id="6"><img src="img/products/" alt="Something" width="128" height="128" class="pngfix"></div>
При отладке в Firebug пишет что переменная param не определена, хотя при отладке показывается следующее:

ui Object { draggable=[1], helper=[1], ещё...}
draggable [div#6.product]
0 div#6.product
context div#6.product
attributes [id="6", class="product ui-draggable"]

В чем проблема? Второй день зависаю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2011, 11:33
Ответы с готовыми решениями:

Срабатывание событий при Drag&Drop
Добрый вечер. Имеется 4 колоны. Нужно, чтобы срабатывало событие при drag&amp;drop. Нормально можно реализовать, только если я перевожу карту...

Привязать возможность Drag&Drop к ниспадающим менюшкам
Здравствуйте, уважаемые. В общем дело такое - есть выпадающие меню с пунктами (при наведении на менюшку она раскрывается), нужно сделать...

Drag & Drop files. Как теперь получить файл?
Здравствуйте. Раньше были методы getAsText() getAsDataURL() getAsBinary() Теперь этих методов нет. Как получить файл, который...

8
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723
04.08.2011, 12:25
Цитата Сообщение от lsm Посмотреть сообщение
var param = $(ui.draggable).attr("id");
Зачем ты еще раз обрамляешь объект ui? Он и так является jQuery объектом.
Используй просто
JavaScript
1
ui.draggable.attr('id')
0
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 14
04.08.2011, 12:36  [ТС]
Да я уже по всякому пробовал. Результат тот-же.
0
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723
04.08.2011, 12:38
атрибут id не может быть числовым, может из-за этого?
0
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 14
04.08.2011, 12:46  [ТС]
Оба-на. А я что-то не нашел такой информации. Попробую заменить.

Добавлено через 5 минут
Увы, результат тот же.
0
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723
04.08.2011, 13:30
Можешь весь код выложить?
0
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 14
04.08.2011, 13:48  [ТС]
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
.....
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript" src="../js/jquery.multiselect.js"></script>
<script type="text/javascript" src="../js/jquery.simpletip-1.3.1.pack.js"></script> <!-- плагин к jQuery simpletip -->
<script type="text/javascript" src="../js/script.js"></script>
......
<div class="container"> 
<span class="top-label">
<span class="label-txt">Товары</span> 
</span>
 
<div class="content-area">
<div class="content drag-desired">
<?php
require_once("page.php");
  do { 
            echo '<div class="product"'.' id="'.$row_goods_recordset2['id'].'"><img src="img/products/'.$row_goods_recordset2['image'].'" alt="'.htmlspecialchars($row_goods_recordset2['name']).'" width="128" height="128" class="pngfix"></div>';}
    while ($row_goods_recordset2 = mysql_fetch_assoc($goods_recordset2)); 
//?>
<div class="clear"></div> 
</div>
</div>
<div class="bottom-container-border">
</div>
</div>
 
<div class="container"> <!-- вторая секция- корзина-->
 
<span class="top-label">
<span class="label-txt">Корзина</span>   <!-- название секции -->
</span>
 
<div class="content-area">
<div class="content drop-here"> <!-- content class, shared with the product section above, and the targeted drop-here class -->
<div id="cart-icon">
<img src="img/Shoppingcart_128x128.png" alt="shopping cart" class="pngfix" width="128" height="128" />  <!-- использование класса pngfix-->
<img src="img/ajax_load_2.gif" alt="loading.." id="ajax-loader" width="16" height="16" />   <!-- прелоадер - спрятан по умолчанию, и отображается когда работает AJAX -->
</div>
 
<form name="checkoutForm" method="post" action="order.php"> <!-- форма -->
<div id="item-list">    <!-- в этот блок мы вставим все товары корзины -->
 
</div>
</form> <!-- конец формы -->
 
<div class="clear"></div>   <!-- чистка потока -->
 
<div id="total"></div>  <!-- здесь расположена общая сумма -->
<div class="clear"></div>   <!-- чистка потока -->
 
<a href="" onclick="document.forms.checkoutForm.submit(); return false;" class="button">
    Оформить
</a>    <!-- кнопка отправки заказа, спрятана по умолчанию. обратите внимание на атрибут onclick -->
 
</div>
</div>
 
<div class="bottom-container-border">   <!-- нижняя часть секции -->
</div>
 
</div><!-- конец основного контейнера -->
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
 script.js
var purchased=new Array();  //массив, содержащий все товары, которые мы приобрели
var totalprice=0;   //цена
 
$(document).ready(function(){
 
$('.product').simpletip({   //используем плагин simpletip
    offset:[40,0],
    content:'<img style="margin:10px;" src="img/ajax_load.gif" alt="loading" />',   // контент по умолчанию
    onShow: function(){
 
        var param = this.getParent().attr('id');
//      // fix для IE6
//      if($.browser.msie && $.browser.version=='6.0')
//      {
//          param = this.getParent().find('img').attr('style').match(/src=\"([^\"]+)\"/);
//          param = param[1];
//      }
//
//      // после того как отображена подсказка, загружаем файл tips.php и передаем название изображения в качестве параметра
        this.load('tips.php',{id:param});
    } 
 
});
 
$(".product").draggable({   // разрешаем перетаскивание картинок товаров
 
containment: 'document',
opacity: 0.6,
revert: 'invalid',
helper: 'clone',
zIndex: 100
 
});
 
$("div.content.drop-here").droppable({  // разрешаем выгружать товары в корзину
        accept: ".product",
        drop:
            function(e, ui)
            {
                var param = ui.draggable.attr('id');
                // IE6 fix
//              if($.browser.msie && $.browser.version=='6.0')
//              {
//                  param = $(ui.draggable).attr('style').match(/src=\"([^\"]+)\"/);
//                  param = param[1];
//              }
                addlist(param); // специальная функция addlist - смотрите ниже
            }
 
});
 
 
});
 
//вторая часть скрипта
 
function addlist(param)
{
    // функция addlist добавляет товар в корзину
    $.ajax({    // посылаем ajax-request в addtocart.php
    type: "POST",
    url: "addtocart.php",
    data: 'id='+param,  // id товара в качестве параметра
    dataType: 'json',   // ждем json
    beforeSend: function(x){$('#ajax-loader').css('visibility','visible');},    // отображаем прелоадер
    success: function(msg){
 
        $('#ajax-loader').css('visibility','hidden');   // прячем прелоадер
        if(parseInt(msg.status)!=1)
        {
            return false;   // если обнаружена ошибка, возвращаем false
        }
        else
        {
            var check=false;
            var cnt = false;
 
            for(var i=0; i<purchased.length;i++)
            {
                if(purchased[i].id==msg.id) // ищем, не покупали ли мы этот товар ранее
                {
                    check=true;
                    cnt=purchased[i].cnt;
 
                    break;
                }
            }
 
            if(!cnt)    // если еще не покупали, или удалили из покупок, то вставляем в корзину
                $('#item-list').append(msg.txt);
 
            if(!check)  // если еще не купили, вставляем в массив покупок
            {
                purchased.push({id:msg.id,cnt:1,price:msg.price});
            }
 
            else    // иначе, если купили
            {
                purchased[i].cnt++;
                $('#'+msg.id+'_cnt').val(purchased[i].cnt); // обновляем select box
            }
 
            totalprice+=msg.price;  // пересчитываем стоимость recalculate the price
            update_total(); // обновляем блок общей стоимости
        }
 
        $('.tooltip').hide();   // прячем подсказку (иногда она остается после перетаскивания)
 
    }
    });
}
 
function findpos(id)    // полезная функция, помогающая найти поизицию товара в массиве, возвращаяя ее
{
    for(var i=0; i<purchased.length;i++)
    {
        if(purchased[i].id==id)
            return i;
    }
 
    return false;
}
 
function remove(id) // удаляем товары из корзины
{
    var i=findpos(id);  // находим их позицию в массиве
 
    totalprice-=purchased[i].price*purchased[i].cnt;    // пересчитываем стоимость
    purchased[i].cnt = 0;   // сбрасываем счетчик
 
    $('#table_'+id).remove();   // удаляем их из таблицы
    update_total(); // обновляем счетчик общей стоимости на странице
}
 
function change(id) // вызывается когда мы изменям количество товаров в селекте
{
    var i=findpos(id);
 
    totalprice+=(parseInt($('#'+id+'_cnt').val())-purchased[i].cnt)*purchased[i].price;
 
    purchased[i].cnt=parseInt($('#'+id+'_cnt').val());
    update_total();
}
 
function update_total() // фунция, которая обновляет блок с общей стоимостью на странице
{
    if(totalprice)
    {
        $('#total').html('всего: $'+totalprice); // Если мы купили что-нибудь, отобразить блок с общей стоимостью и кнопку оформления
        $('a.button').css('display','block');
    }
    else    // прячем их
    {
        $('#total').html('');
        $('a.button').hide();
    }
}
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
body,h1,h2,h3,p,td,quote,small,form,input,ul,li,ol,label{
/* сброс первоначальных стилей, для совместимости браузеров */
    margin:0px;
    padding:0px;
    font-family:Arial, Helvetica, sans-serif;
}
 
body{
    color:#555555;
    font-size:13px;
    background-color:#282828;
}
 
.clear{ /*  clear-fix хак для чистки потока от флоатов */
    clear:both;
}
 
#main-container{    /* это основной контейнер, содержащий две секции */
    width:700px;
    margin:20px auto;
}
 
.container{ /* основной контейнер для секций контента - товаров и корзины */
    margin-bottom:40px;
}
 
.top-label{ /* внешний span, включающий в себя название секции*/
    background: url(img/label_bg.png) no-repeat;    /* отображение левой части label_bg.png - широкого изображения с закругленными краями */
    display:inline-block;
    margin-left:20px;
    position:relative;
    margin-bottom:-15px;    /* название секции прилегает к верхнему краю секции товаров*/
}
 
.label-txt{ /* внутренний span - обведен красной рамкой, на рисунке выше*/
    background: url(img/label_bg.png) no-repeat top right;  /* отображение правой части изображения label_bg.png */
    display:inline-block;
    font-size:10px;
    height:36px;
    margin-left:10px;   /* слева оставлено пустое пространство, чтобы отображить фон внешнего span'а */
    padding:12px 15px 0 5px;
    text-transform:uppercase;
}
 
.content-area{  /* Верхняя часть изображения с закругленными краями, смотрите на рисунке выше */
    background:url(img/container_top.png) no-repeat #fcfcfc;
    padding:15px 20px 0 20px;
}
 
.content{   /* общий отступ для обеих секций */
    padding:10px;
}
 
.drag-desired{  /* индивидуально назначенные свойства */
    background:url(img/drag_desired_label.png) no-repeat top right;
    padding:20px;
}
 
.drop-here{ /* не предназначено для других секций */
    background:url(img/drop_here_label.png) no-repeat top right;
}
 
.bottom-container-border{   /* нижняя часть закругленной картинки, которая завершает секцию */
    background:url(img/container_bottom.png) no-repeat;
    height:14px;
}
 
.product{   /* стили для товаров */
    border:2px solid #F5F5F5;
    float:left;
    margin:15px;
    padding:10px;
}
 
.product img{
    cursor:move;
}
 
p.descr{
    padding:5px 0;
}
 
small{
    display:block;
    margin-top:4px;
}
 
.tooltip{   /* тултипы, которые создаются с помощью плагина simpletip */
    position: absolute;
    top: 0;
    left: 0;
    z-index: 3;
    display: none;
 
    background-color:#666666;
    border:1px solid #666666;
    color:#fcfcfc;
 
    padding:10px;
 
    -moz-border-radius:12px;    /* закругленные углы */
    -khtml-border-radius: 12px;
    -webkit-border-radius: 12px;
    border-radius:12px;
}
 
/*вторая часть CSS*/
 
#cart-icon{ /* div, который содержит иконку корзины */
    width:128px;
    float:left;
    position:relative;  /* устанавливаем относительное позиционирование, так, чтобы ajax-загрузчик позиционировался по отношению к div*/
}
 
#ajax-loader{
    position:absolute;  /* абсолютное позиционирование располагает элемент на странице, относительно его родительского элемента, которому назначено относительное позиционирование */
    top:0px;
    left:0px;
    visibility:hidden;
}
 
#item-list{ /* содержимое корзины будет расположено в этом блоке */
    float:left;
    width:490px;
    margin-left:20px;
    padding-top:15px;
}
 
a.remove,a.remove:visited{  /* Удаление ссылки */
    color:red;
    font-size:10px;
    text-transform:uppercase;
}
 
#total{ /* блок, с общей суммой */
    clear:both;
    float:right;
    font-size:10px;
    font-weight:bold;
    padding:10px 12px;
    text-transform:uppercase;
}
 
#item-list table{   /* каждый товар в корзине, позиционируется внутри блока item-list*/
    background-color:#F7F7F7;
    border:1px solid #EFEFEF;
    margin-top:5px;
    padding:4px;
}
 
a.button,a.button:visited{  /* Кнопка оформления заказа */
    display:none;
 
    height:29px;
    width:136px;
 
    padding-top:15px;
    margin:0 auto;
    overflow:hidden;
 
    color:white;
    font-size:12px;
    font-weight:bold;
    text-align:center;
    text-transform:uppercase;
 
    background:url(img/button.png) no-repeat center top;    /* отображаем только верхнюю часть фонового изображения */
}
 
a.button:hover{
    background-position:bottom; /* при наведении, мы показываем нижнюю часть фоногового изображения */
    text-decoration:none;
}
 
/* Несколько менее интересных стилей */
 
a, a:visited {
    color:#00BBFF;
    text-decoration:none;
    outline:none;
}
 
a:hover{
    text-decoration:underline;
}
 
h1{
    font-size:28px;
    font-weight:bold;
    font-family:"Trebuchet MS",Arial, Helvetica, sans-serif;
}
 
h2{
    font-weight:normal;
    font-size:20px;
 
    color:#666666;
    text-indent:30px;
    margin:20px 0;
}
 
.tutorialzine h1{
    color:white;
    margin-bottom:10px;
    font-size:48px;
}
 
.tutorialzine h3{
    color:#F5F5F5;
    font-size:10px;
    font-weight:bold;
    margin-bottom:30px;
    text-transform:uppercase;
}
 
.tutorial-info{
    color:white;
    text-align:center;
    padding:10px;
    margin-top:-20px;
}
0
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
04.08.2011, 20:32
JavaScript
1
2
3
$(document).ready(function() {
    var dropZone = $('#dropZone'),
});
//при перетаскивание если над диков то перекрашиваемым и наоборот
JavaScript
1
2
3
4
5
6
7
8
9
dropZone[0].ondragover = function() {
    dropZone.addClass('hover');
    return false;
};
 
dropZone[0].ondragleave = function() {
    dropZone.removeClass('hover');
    return false;
};
//когда перетащил и отпустил
JavaScript
1
2
3
4
5
dropZone[0].ondrop = function(event) {
    event.preventDefault();
    dropZone.removeClass('hover');
    dropZone.addClass('drop');
};
//посылаем
JavaScript
1
2
3
4
5
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = stateChange;
xhr.open('POST', '/upload.php');
xhr.setRequestHeader('X-FILE-NAME', file.name);
xhr.send(file);
//принимаем
JavaScript
1
2
3
4
function stateChange(event) {
    if (event.target.readyState == 4) 
            dropZone.text('Загрузка успешно завершена!');
}
0
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 14
19.08.2011, 14:38  [ТС]
С атрибутом разобрался. Другой вопрос.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
$(document).ready(function(){
 
$(".product").draggable({   // разрешаем перетаскивание картинок товаров
 
containment: 'document',
opacity: 0.6,
revert: 'invalid',
helper: 'clone',
zIndex: 100
 
});
 
$("div.content.drop-here").droppable({  // разрешаем выгружать товары в корзину
        accept: ".product",
        drop:
            function(e, ui)
            {
                var param = ui.draggable.attr('id');
                addlist(param); // специальная функция addlist - смотрите ниже
            }
});
 
 
});
 
 
function addlist(param)
{
    // функция addlist добавляет товар в корзину
 
    $.ajax({    // посылаем ajax-request в addtocart.php
    type: 'POST',
    url: 'addtocart.php',
    data: 'id='+param,
    dataType: 'json',   // ждем json
    beforeSend: function(x){$('#ajax-loader').css('visibility','visible');},    // отображаем прелоадер
    error: function(XMLHttpRequest, textStatus){
        $('#ajax-loader').css('visibility','hidden');   // прячем прелоадер
        alert(XMLHttpRequest.responseText + textStatus);
},
    success: function(msg){
        $('#ajax-loader').css('visibility','hidden');   // прячем прелоадер
        if(parseInt(msg.status)!=1)
        {
            return false;   // если обнаружена ошибка, возвращаем false
        }
        else
        {
            var check=false;
            var cnt = false;
 
            for(var i=0; i<purchased.length;i++)
            {
                if(purchased[i].id==msg.id) // ищем, не покупали ли мы этот товар ранее
                {
                    check=true;
                    cnt=purchased[i].cnt;
 
                    break;
                }
            }
 
            if(!cnt)    // если еще не покупали, или удалили из покупок, то вставляем в корзину
                $('#item-list').append(msg.txt);
 
            if(!check)  // если еще не купили, вставляем в массив покупок
            {
                purchased.push({id:msg.id,cnt:2,price:msg.price});
            }
 
            else    // иначе, если купили
            {
                purchased[i].cnt++;
                $('#'+msg.id+'_cnt').val(purchased[i].cnt); // обновляем select box
            }
 
            update_total(); // обновляем блок общей стоимости
        }
 
        $('.tooltip').hide();   // прячем подсказку (иногда она остается после перетаскивания)
 
    }
    });
}
Функция addlist() возвращает parsererror. Хотя по ошибке выводится вполне корректная информация:

addtocart.php

PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
require_once('/Connections/mysql.php');
 
if(!$_POST['id']) die("Нет таких товаров!");
 
$id=$_POST['id'];
$row=mysql_fetch_assoc(mysql_query('SELECT * FROM goods WHERE id='.$id));
 
echo '{status:1,id:'.$row['id'].',price:'.$row['price'].',txt:
<table width="100%" id="table_'.$row['id'].'"><tr><td width="60%">'.$row['id'].'</td><td width="10%">'.$row['price'].'</td><td width="15%"><select name="'.$row['id'].'_cnt" id="'.$row['id'].'_cnt" onchange="change('.$row['id'].');"><option value="2">2</option><option value="4">4</option></select></td><td width="15%"><a href="#" onclick="remove('.$row['id'].');return false;" class="remove">del</a></td></tr></table>}';
?>
Добавлено через 5 минут
Вот что возвращается по ошибке:

{status: 1, id: 1, price: 1100000, txt:
<table width="100%" id="table_1"><tr><td width="60%">1</td><td width="10%">1100000</td><td width="15%"><select name="1_cnt" id="1_cnt" onchange="change(1);"><option value="2" >2 </option > <option value="4" >4 </option > </select > </td><td width="15%"><a href="#" on****="remove(1); return false;" class="remove">del</a> </td > </tr > </table >}parsererror
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2011, 14:38
Помогаю со студенческими работами здесь

Drag&Drop
Есть таблица (много полей) Существует ли фреймворк для Drag&amp;Drop который по верх этой таблице двигал div блок и по необходимости менял...

Drag&Drop
Я хочу сделать интерфейс Drag and Drop. И вроде всё делаю правильно, но почему-то скрипт работает не совсем адекватно. Вот, собственно, сам...

Drag&Drop and resize
Помогите понять в чем проблема, я только начал, еще зеленый. Проблема вот в чем, элемент перемещается нормально, но вот неадекватно...

Drag&Drop в JavaScript
Народ привет!!!!! Подскажите пожалуйста, как в JavaScript сделать перетаскивание какого-нибудь элемента или рисунка,и чтобы при...

Drag&drop и список
https://codepen.io/Swaer/pen/xJGdPZ не знаю как перетаскивать в другой блок элементы списка, если один элемент, я его легко могу перемещать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru