排序输入框移动向上/向下仅适用于第一组按钮

时间:2013-06-11 11:11:33

标签: javascript jquery jquery-ui

我合并了我的最后两个演示,现在发生了冲突。

这是我的2个演示

  1. 添加多个输入框 DEMO

  2. 排序/缩小 - DEMO

  3. Merged demo

    如果查看合并演示,则排序选项仅适用于第一个输入框。这意味着您只能将第一个文本框上下移动,相应文本框的其他上/下按钮根本不起作用。

    我需要它作为排序向上/向下演示,所有按钮都应该可以向上或向下移动相应的输入框。

    提前致谢!!

    代码

    $(document).ready(function(){
    
         $(":radio").click(function(){
             $(".test").hide();
             var show = $(this).attr("data-show");
             $("#"+show).show(300)
         });
    
            $filtr = $('.filtr');
    
            $filtr.on('click', '.add', function(){
                $(this).closest('.loop').clone().appendTo( $(this).closest('.test') );
            });
    
            $filtr.on('click', '.del', function(){
               $(this).closest('.loop').remove();
            });
    
            $('#1lev, #2lev, #3lev').hide();
    
         //For sort up/down
         function moveUp(item) {
        var prev = item.prev();
        if (prev.length == 0)
            return;
        prev.css('z-index', 999).css('position','relative').animate({ top: item.height() }, 250);
        item.css('z-index', 1000).css('position', 'relative').animate({ top: '-' + prev.height() }, 300, function () {
            prev.css('z-index', '').css('top', '').css('position', '');
            item.css('z-index', '').css('top', '').css('position', '');
            item.insertBefore(prev);
        });
    }
    function moveDown(item) {
        var next = item.next();
        if (next.length == 0)
            return;
        next.css('z-index', 999).css('position', 'relative').animate({ top: '-' + item.height() }, 250);
        item.css('z-index', 1000).css('position', 'relative').animate({ top: next.height() }, 300, function () {
            next.css('z-index', '').css('top', '').css('position', '');
            item.css('z-index', '').css('top', '').css('position', '');
            item.insertAfter(next);
        });
    }
    
    $(".filtr").sortable({ items: ".loop", distance: 10 });
    $('button').click(function() { 
        var btn = $(this);
        var val = btn.val();
        if (val == 'up')
            moveUp(btn.parents('.loop'));
        else
            moveDown(btn.parents('.loop'));
    });
    
    });
    

2 个答案:

答案 0 :(得分:1)

请查看http://jsfiddle.net/VMBtC/7/

我只在一行中进行了更改

$(document).on("click", "button", function() {

这是你的要求吗?让我知道你的意见。

答案 1 :(得分:0)

而不是文档选择器选择最近的父选择器

$('.filtr').on('click','button' ,(function() {     

为了研究两者之间的区别,您可以看到this 您还可以阅读.on event

直接和委派活动部分