【问题标题】:Swap two list classes from different lists with each other相互交换来自不同列表的两个列表类
【发布时间】:2013-12-24 23:17:08
【问题描述】:

我想交换两个不同列表中的元素。因此,如果我在左侧列表和右侧列表中选择某些内容,它们需要交换。

目前看起来像这样: html:

<ul id="sortable1" class="connectedSortable">
    <li value="1" class="ui-state-default">Sort1 Item 1</li>
    <li value="2" class="ui-state-default">Sort1 Item 2</li>
    <li value="3" class="ui-state-default">Sort1 Item 3</li>
    <li value="4" class="ui-state-default">Sort1 Item 4</li>
    <li value="5" class="ui-state-default">Sort1 Item 5</li>
</ul>

<ul id="sortable2" class="connectedSortable">
    <li value="1" class="ui-state-highlight">Sort2 Item 1</li>
    <li value="2" class="ui-state-highlight">Sort2 Item 2</li>
    <li value="3" class="ui-state-highlight">Sort2 Item 3</li>
    <li value="4" class="ui-state-highlight">Sort2 Item 4</li>
    <li value="5" class="ui-state-highlight">Sort2 Item 5</li>
</ul>

jquery:

var testClickSort1 ='';
var testClickSort2 ='';

$(function() {
    $("#sortable1").sortable({
        cursor: 'pointer',
        connectWith: ".connectedSortable"
    }).disableSelection();

$("#sortable2").sortable({
    cursor: 'pointer',
    connectWith: ".connectedSortable"
}).disableSelection();

$("#sortable1 li").on('click',function(){
       // $("#testClickSort1").html($(this).attr('value'));
        testClickSort1 = $(this).attr('value'); 
        test();
});

$("#sortable2 li").on('click',function(){
       // $("#testClickSort2").html($(this).attr('value'));
        testClickSort2 = $(this).attr('value');
        test();
});
});

 function test(){ 
      if ((testClickSort1 != "") && (testClickSort2 != "")) {
         alert ("test: " + testClickSort1 + '' +  testClickSort2);
         //function to swap testclicksort1 with testclicksort2
         testClickSort1 = '';
         testClickSort2 = '';
}   
}

可以在这里查看:

http://jsfiddle.net/qkCcS/26/

现在我需要知道用 testclicksort2 交换 testclicksort1 的功能是什么。

提前致谢。

你好,

沃特

【问题讨论】:

  • 你为什么一次又一次地问同样的问题?不是第一次回答吗?
  • 不,不是,我在那里使用了不同的代码。我更新了主题,但它在某个地方结束了,所以有点没用。没想到会有反应。现在我离解决方案更近了。

标签: jquery list function swap items


【解决方案1】:

可以这样做:

$(".connectedSortable").on('click','li', function () {
        /* make sure only one selected at a  time in a list*/
        $(this).siblings().removeClass('selected')
        $(this).toggleClass('selected');
        switchSelectedItems()
 }); 

function switchSelectedItems() {
    var $selected = $('.selected');
    /* make sure there is a pair*/
    if ($selected.length == 2) {
        $selected.each(function () {
            $(this).after($selected.not(this).clone().removeClass('selected'));
        }).remove()
    }
}

这段代码的作用是对每个选定的项目进行克隆,将其匹配后放在其他列表中,然后删除原件

DEMO

【讨论】:

  • 很好的开始,看起来不错!但是,如果我想将元素切换回来怎么办?现在它只是从左侧列表到右侧或从右侧列表到左侧的一次性操作。这可能吗?
  • 当然可以。如果需要,您可以存储元素 ID 并用于撤消
  • 也许我问的有点多,但我真的不擅长 javascript,需要为学校项目(应用原型)解决这个问题。你能给我举个例子吗?如果没有,没关系,然后我将尝试自己解决它!你已经帮了我很多,所以谢谢伙计!
  • 那么你想要什么提出更多的问题,比如基于什么事件? UI 中除了 2 个列表之外什么都没有。当您只问如何切换时...通常您会得到...不是一个完整的应用程序
  • 哈哈哈,不,我不问你要一个应用程序。我只想知道如何在这个列表中来回切换列表项。我已经编写了应用程序。这只是我需要的一些功能。但是通过这个例子,我可以只切换一次列表项。如果它们被切换并且我再次单击它们,它们需要能够再次切换。对于那件作品,我在问一个例子!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多