【发布时间】:2011-02-04 20:52:28
【问题描述】:
我有以下标记和 javascript 来对一些项目进行排序。项目可以在一个块内或跨其他块进行排序。它可以工作,但是在将项目从一个块移动到另一个块后,我在检索正确的块 ID 时遇到了问题。
例如,如果我在“Block 1”中移动项目 1,我会得到“I am in Block= block_1”,但如果我将项目 1 移动到 Block 2,我仍然会得到 I am in Block 1。
但我想将块 2 作为其父容器。我需要检索这个 id,以便我可以做一些 ajax 并相应地更新数据库。
你能帮我纠正一下吗?
<div id="blocks_sortable">
<div id="block_1">
<h2>Block 1</h2>
<div class="items_sortable connectedSortable">
<div id="item_1">
<span>Item 1</span></div>
<div id="item_2">
<span>Item 2</span></div>
<div id="item_3">
<span>Item 3</span></div>
</div>
</div>
<div id="block_2">
<h2>Block 2</h2>
<div class="items_sortable connectedSortable">
<div id="item_4">
<span>Item 4</span></div>
<div id="item_5">
<span>Item 5</span></div>
<div id="item_6">
<span>Item 6</span></div>
</div>
</div>
</div>
<script>
$("#blocks_sortable").sortable({ });
$(".items_sortable").sortable({
connectWith: '.connectedSortable'
, forcePlaceholderSize: true
, stop : function(event, ui){
alert("I am in block = "+$(this).parent().attr("id"));
}
}).disableSelection();
</script>
谢谢。
【问题讨论】:
-
您应该注意的另一件事是,通常在从事件触发的函数中,事件是由“this”引用的......所以你要求的是父级事件对象不是被移动的元素。至少,我认为它是这样工作的......这就是它在 vanilla JS 中的工作方式(同样,我对 jQuery 并没有真正的经验,所以我不知道 $(this) 是否不同等)
标签: php javascript jquery jquery-ui-sortable