在最后一个孩子中删除后添加链接

时间:2011-10-08 15:16:38

标签: javascript jquery append

我希望在删除之后在课程的最后一个孩子中添加附加链接:{('.' + change_class + ':last .adda .mediumCell:first')),但如果删除最后一个孩子(44444444444444444444),则不会追加到最后一个孩子3333333333333333333并删除相同的行,如何解决它?

我的代码示例: http://jsfiddle.net/LX49c/1/

$('.remove').live('click',function (e) {
    e.preventDefault();

    var change_class = $(this).closest('.find_input').find('div').attr('class').split(" ")[0];
    var url = $(this).closest('.find_input').find('div').attr('class').split(" ")[1];
    var get_class = $(this).closest('.' + change_class).attr('id');
            $('#' + get_class).fadeOut('slow', function () {
                $(this).remove();
            });
            $('.' + change_class + ':last .adda .mediumCell:first').append('<a href="" class="add_input">add</a>'); 
});

2 个答案:

答案 0 :(得分:1)

append(...)移至.fadeOut功能。见http://jsfiddle.net/LX49c/2/

$('.remove').live('click',function (e) {
    e.preventDefault();

    var change_class = $(this).closest('.find_input').find('div').attr('class').split(" ")[0];
    var url = $(this).closest('.find_input').find('div').attr('class').split(" ")[1];
    var get_class = $(this).closest('.' + change_class).attr('id');
            $('#' + get_class).fadeOut('slow', function () {
                $(this).remove();
                $('.' + change_class + ':last .adda .mediumCell:first').append('<a href="" class="add_input">add</a>');
            });
            //Moved from here
});

另一种方法是在追加之前删除该类:http://jsfiddle.net/LX49c/4/

....
var get_class = $(this).closest('.' + change_class).attr('id');
        $('#' + get_class).fadeOut('slow', function () {
            $(this).remove();
        });
        $("#" + get_class).removeClass(change_class);
        $('.' + change_class + ':last(-1) .adda .mediumCell:first').append('<a href="" class="add_input">add</a>'); 

<小时/> 你正在做多个昂贵的JQuery调用。我建议更换以下代码:

var change_class = $(this).closest('.find_input').find('div').attr('class').split(" ")[0];
var url = $(this).closest('.find_input').find('div').attr('class').split(" ")[1];
//Replace the previous by:
var className = $(this).closest('.find_input').find('div').attr('class').split(" ");
var change_class = className[0];
var url = className[1];

答案 1 :(得分:0)

您要删除之前的链接。您正在启动一个动画,该动画将在元素完成时删除该元素,但在退出该函数之前动画将不会启动。

如果要在删除后附加,则必须将该代码放入动画完成后执行的事件处理程序中:

$('.remove').live('click',function (e) {
  e.preventDefault();

  var change_class = $(this).closest('.find_input').find('div').attr('class').split(" ")[0];
  var url = $(this).closest('.find_input').find('div').attr('class').split(" ")[1];
  var get_class = $(this).closest('.' + change_class).attr('id');
  $('#' + get_class).fadeOut('slow', function () {
    $(this).remove();
    $('.' + change_class + ':last .adda .mediumCell:first').append('<a href="" class="add_input">add</a>'); 
  });
});