当前位置: 首页 > 知识库问答 >
问题:

多次调用的Jqueryui可排序接收事件

阎承嗣
2023-03-14

因此,我有一个嵌套的jqueryui可排序项和一个可拖动项,我可以将副本拖动到任何级别的可排序项中。

请参阅此处的jsfiddlehttp://jsfidle.net/rmossuk/juna7/4/

  • 产品
    • 项目1
    • 项目2
    • 项目3
      • 项目5
        • 项目6
        • 项目4

        纽维特姆

        问题是,当我将NewItem拖到嵌套的可排序表(Item3)中时,receive事件会被调用3次。一次用于产品可排序,由于某种原因两次用于项目可排序!!??

        我需要它,以便只调用Item3可排序的接收事件,而不是其他2。

        有人知道怎么做吗??

        多谢

共有2个答案

钮安歌
2023-03-14

嘿,我改变了你的代码一点,如果你可以妥协使用ol和李,给这个代码一个尝试,如果它为u工作

HTML

 <div class="container">Product1
    <ol class="sortable">
        <li>Item1</li>
        <li>Item2</li>
        <li name="to item3">Item3
           <ol>
                <li class="inner">Item5</li>   
                <li class="inner">Item6</li>  
           </ol>              
        </li>
        <li>Item4</li>
        <li name="new item moved">New Item</li>
    </ol>
 </div>

jQuery

 $(document).ready(function(){
    $('ol.sortable').nestedSortable(
        {
            disableNesting: 'no-nest',
            forcePlaceholderSize: true,
            handle: 'div',
            items: 'li',
            opacity: .6,
            placeholder: 'placeholder',
            revert: 250,
            tabSize: 25,
            tolerance: 'pointer',
            toleranceElement: '> div',
            connectWith: '.sortable',
            stop: function(event, ui){
                var element = $(ui.item).attr("name");
                var parent = $(ui.item).parent().attr("name");
                alert(element);
                alert(parent);
           }
        });
   });

CSS

li {
   margin-left: 10px;
   margin-top: 10px;
}
.inner{
   margin-left: 40px;
}

不要忘记包含NestedSortable.js和最新的Jquery

秦信瑞
2023-03-14

该错误是由于div.sortable嵌套在另一个div.sortable中而导致的,因此当您放入一个新元素时,它会触发两次排序。我想出的解决办法只是计算在特定drop中添加的元素的数量,并将一个名为“Delete Me”的类添加到重复的元素中。

然后只需在排序的末尾调用$(“.deleteMe”).remove()来删除附加项。

不是很理想,但似乎对我有用。http://jsfidle.net/juna7/72/

$(function() {
    var dropCount=0;
    $(".sortable").sortable({
        connectWith: ".sortable",
        cursor: 'pointer',
        receive: function(event, ui) {
            dropCount=dropCount+1;
            if(dropCount>1)
                $(ui.item).addClass("deleteMe");
            console.log(dropCount);
        },
        start: function(event, ui) {
            dropCount=0;   
            var placeholders=0;
            $(".ui-sortable-placeholder").each(function(){
                placeholders=placeholders+1;                
                if(placeholders>1)
                    $(this).height(0);
            });
        },
        stop: function(event, ui) {
            $(".deleteMe").remove();
            dropCount=0;   
        }
    });
    $(".draggable").draggable({
        handle: ".icon-move",
        connectToSortable: ".sortable",
        appendTo: "body",
        helper: 'clone',
        distance: 30
    });
});​

已更新

此外,我注意到排序占位符a也重复了..所以我将它们的高度设置为0px来移除重复。

    start: function(event, ui) {
        dropCount=0;   
        var placeholders=0;
        $(".ui-sortable-placeholder").each(function(){
            placeholders=placeholders+1;                
            if(placeholders>1)
                $(this).height(0);
        });
    }
 类似资料:
  • a.cs文件: 公共活动MyEventHandler Ontagload; 私有void btnLoad_Click(object sender,EventArgs e){if(OnTagLoad!=null){OnTagLoad(sender,e,runTimeData);}} 每当我单击Load按钮时,事件应该只触发一次。我们如何在windows窗体中实现这一点。 感谢你的帮助。

  • 本文向大家介绍jqueryUI里拖拽排序示例分析,包括了jqueryUI里拖拽排序示例分析的使用技巧和注意事项,需要的朋友参考一下 示例参考http://jsfiddle.net/KyleMit/Geupm/2/  (这个站需要FQ才能看到效果) 其实是jqueryUI官方购物车拖拽添加例子的增强版,就是在拖拽的时候增加了排序 这个是html代码   这个是js代码主要在js代码中红色代码部分设置

  • 我有两张紧挨着的桌子。以下是模板的一个简短示例: 看起来是这样的: 我的目标是使用可排序的jquery-ui功能,通过同时拖放两个表的行来排序。换句话说-当用户单击例如从tabel1单元格然后整行 当鼠标向上时,应先拖动,然后再放下。我不需要在两个表之间拖放行—我需要在拖动时将两个表中的行视为一行—如果这些行在其表中具有相同的位置Y。 实际上,用例是我有网格,我需要在其中实现拖放行。用户可以冻结网

  • 问题内容: 为什么在组合框中选择项目时会两次调用此事件? 问题答案: 对于一次更改,JComoboBox ItemListener确实会被调用两次。一次用于SELECTED事件,一次用于DESELECTED事件。 有关如何编写ItemListener的信息,请参见本教程页面。 基本上你要做的就是

  • 在我的应用程序中,我将TextWatcher放在EditText上。当我更改EditText的文本时,TextWatcher的事件会被调用两次。 我正在使用模拟器来运行应用程序。

  • 我几乎没有元素。我可以拖放元素。。。但是,我的要求是我需要在放置后对元素进行排序(释放鼠标后,元素必须移动到目标位置)。请帮帮我。。。这是我使用的代码,