#javascript #jquery #jquery-ui #variables #jquery-ui-draggable
#javascript #jquery #jquery-пользовательский интерфейс #переменные #jquery-пользовательский интерфейс-перетаскиваемый
Вопрос:
Решение найдено!Я нашел это, я упустил из виду, что я мог бы просто получить идентификатор переменной item. Итак, я вставил var item_id = item.attr('id');
, и это было мое решение. Это намного проще, чем я думал. Спасибо всем за вашу помощь!
Итак, у меня есть несколько перетаскиваемых элементов в jQuery, все они являются изображениями, но у каждого из них есть свой собственный идентификатор. В любом случае, я настроил функцию, которая предварительно формируется после того, как изображение будет перенесено в droppable. Я хочу иметь возможность извлекать идентификатор изображения, чтобы я мог обработать, какое изображение было удалено из моей базы данных.
function foundationsInSpot(drag_item,spot)
{
var oldSpotItem = $(spot).find('img');
if(oldSpotItem.length>0) {
oldSpotItem.appendTo('#foundationinv').draggable({ revert: 'invalid' });
}
var item = $('<img />');
var item_id = "";
var bid = "<?= $bid ?>";
item.attr('src',drag_item.attr('src')).attr('id',drag_item.attr('id')).attr('class',drag_item.attr('class')).appendTo(spot).draggable({ revert: 'invalid' });
drag_item.remove();
alert('BenID: ' bid ' Foundation: ' item_id);
var dataString = 'item_id=' item_id 'amp;bid=' bid;
$.ajax({
type: "POST",
data: dataString,
url: "http://motb.isgreat.org/objects/pfoundations.php",
});
}
Итак, это мой код. Мне нужно найти item_id
. Это было мое предположение var item_id = $('<img />').attr('id');
, но оно вернуло пустую информацию. Я также пробовал var item_id = ui.draggable.attr("id");
, и это просто остановило остальную часть моей функции. Есть идеи? Заранее спасибо.
Кстати, вот как выглядят мои перетаскиваемые элементы. <img src='http://motb.isgreat.org/objects/khhhqw4s.png' class='object foundation' id='khhhqw4s'/>
ОБНОВЛЕНИЕ Я переместил var item_id = ui.draggable.attr("id");
приведенный выше оператор if, и теперь я получаю undefined
. Итак, я не уверен, куда идти дальше, но я знаю, что мой вызов AJAX работает правильно, поскольку он обновляет мою базу данных с помощью undefined
.
ОБНОВИТЬ — Снова
Итак, вот как я вызываю свою функцию, если это упрощает задачу.
$(".foundations").draggable({ revert: 'invalid'}).addTouch;
$('#foundationinv').droppable({accept: '.foundations'});
$("#foundations").droppable({ accept: '.foundations'})
$('#foundations,#foundationinv').bind('drop', function(ev,ui) { foundationsInSpot(ui.draggable,this); });
Я никогда раньше не делал ничего подобного, так что это действительно выше моих сил. Если вы хотите увидеть страницу лично, перейдите на http://motb.isgreat.org и нажмите кнопку входа в систему и используйте testbot как для имени пользователя, так и для пароля. Чтобы увидеть, где находятся перетаскиваемые объекты, с левой стороны есть это большое поле с 4 меньшими под ним, щелкните над маленьким полем, где слово «основы». Я пытаюсь перетащить те объекты, которые появляются в маленьком окне. Вы можете увидеть предупреждение с информацией, которую я пытаюсь передать. Не стесняйтесь проверять мой исходный код на наличие каких-либо проблем, элементы вызываются из моей базы данных, поэтому мой PHP, вероятно, отсутствует в вашем исходном коде.
Я нашел это, я упустил из виду, что я мог бы просто получить идентификатор переменной item. Итак, я ввел var item_id = item.attr('id');
, и это было мое решение. Это намного проще, чем я думал. Спасибо всем за вашу помощь!
Комментарии:
1. Что вы хотите получить
id
от? Я совершенно не понимаю, что вы пытаетесь сделать.id
атрибуты должны быть уникальными на странице.2. Я хочу получить идентификатор изображения, которое также можно перетаскивать. Вот код.
<img src='http://motb.isgreat.org/objects/khhhqw4s.png' class='object foundation' id='khhhqw4s'/>
3. Я не могу понять ваш сайт: balexandre.com/temp/2011-05-28_2306.png
4. если посмотреть на это в Chrome, у вас есть ошибки javascript: balexandre.com/temp/2011-05-28_2313.png — У вас настолько плохой javascript, что я бы посоветовал вам начать все сначала, удалить весь ваш javascript, добавить файл сценария в нижней части вашего кода и делать все в этом внешнем файле, не помещайте никакого кода javascript на вашу главную страницу. Используйте инспектор для выполнения того, что вы хотите, и для тестирования
5. Извините, забыл упомянуть, что он был основан на Webkit, упс! Да, я знаю об ошибках JavaScript, я постоянно работаю над этим, то, что есть в Интернете, отличается от того, что есть на моем Mac, у меня просто есть JS на одной странице для удобства редактирования, затем я собираюсь переработать его извне. Надеюсь, это все еще хорошо, учитывая, что мне 15! Спасибо за вашу помощь!
Ответ №1:
внутри droppable
у вас есть свойство, называемое drop
$("#destination").droppable({
hoverClass: 'ui-state-hover',
helper: 'clone',
cursor: 'move',
drop: function(event, ui) {
$(this).addClass('ui-state-highlight');
$(ui.draggable).addClass('ui-state-highlight');
$(ui.draggable).draggable('disable');
console.log('Dragged: ' $(ui.draggable).attr("id"));
}
});
используйте этот метод для вызова объекта, вызов которого был удален $(ui.draggable).attr("id")
если вы видите объект, ui.draggable
представляющий собой всего лишь HTML-код, вскоре вы обернете его в $()
форму и сможете выполнять с ним любые операции jQuery.
откройте консоль в инспекторе, чтобы увидеть идентификатор
Комментарии:
1. Я все еще в замешательстве, надеюсь, мое 2-е обновление поможет вам лучше понять мою проблему. Спасибо!