【发布时间】:2020-12-25 08:51:07
【问题描述】:
我有以下JS代码:
$("#list-one, #list-two").sortable({
connectWith: '#list-two',
start: function () {
sender = $(this);
recvok = false;
},
over: function () {
recvok = ($(this).not(sender).length != 0);
},
stop: function () {
if (!recvok)
$(this).sortable('cancel');
$.ajax({
url: '/process-list-element',
type: 'GET',
data: {'list_element_name': $(this).find('h6').text()},
});
}
}).disableSelection();
拖放工作正常,但在 AJAX 函数中,“this”关键字指的是整个列表,而不是被拖放的列表元素。我需要将拖放到函数 process-list-element 的列表元素的名称发送,而不是整个列表。供您参考,当拖放列表元素时,函数 process-list-element 会被适当地触发。有没有办法可以从“this”关键字访问列表元素?如果有帮助的话,该列表只是一个由 ul 和 li 标签组成的无序 HTML 列表。可以在下面找到 HTML 的 sn-p:
<ul id="list-one" class="connectedSortable">
<li class="inner-pad">
<h6>Blah blah blah</h6>
<div class="content-div">
<span>Blah blah blah</span>
<p>Blah blah blah</p>
<i>$32.95</i>
</div>
</li>
</ul>
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
为什么不使用传递给“start”、“stop”和“over”事件的默认参数呢?试试这个,
start( event, ui )。ui.item是您正在寻找的。另请阅读this -
ui.item 是一个 JQuery 对象。如何从中提取值?
-
你能显示你的html吗?
-
我在上面展示了一个 HTML 的 sn-p。
-
使用 console.log(ui.item) 打印对象。您可以在浏览器的开发人员工具控制台中找到结果。阅读开发者工具以及如何使用它。它是专门调试代码的非常有用的工具。你能在这里显示console.log的结果吗?
标签: javascript html jquery ajax drag-and-drop