2015-05-16 2 views
2

Я задал вопрос относительно чего-то, связанного с этим ранее, но тот, кто ответил, не очень хорошо объяснил его ответ.Вам нужно всегда скрывать элемент при использовании функции jQuery slideDown?

Когда вы нажимаете кнопку «duplicate» в моей форме, я бы хотел, чтобы поле ввода скользило вниз, а не просто появилось.

Он сказал, что вам всегда нужно скрыть элемент с помощью функции hide() перед использованием функции slideDown(), это правильно?

HTML:

<form action="javascript:void(0);" method="POST" autocomplete="off"> 
    <button id="add">Add Field</button> 
    <div class='input_line'> 
     <input type="text" name="input_0" placeholder="Input1"><input type="button" class="duplicate" value="duplicate"> 
    </div> 
</form> 

Jquery:

jQuery(document).ready(function() { 
    'use strict'; 
    var input = 1, 
     blank_line = $('.input_line'); 

    $('#add').click(function() { 
     var newElement = blank_line.clone(true).hide(); 
     $('form').append(newElement); 
     $(newElement).slideDown(); 
    }); 

    $('form').on('click', '.duplicate', function() { 
     $(this).parent().after($(this).parent().clone()); 
     $('.input_line').last().before($('#add')); 
     input = input + 1; 
    }); 
}); 

Fiddle обновляется. JSFiddle

Что является самым простым способом сделать это?

+0

Может включать ссылку на вопрос «о том, что связано с этим раньше» _? – guest271314

+0

@ guest271314 http://stackoverflow.com/questions/30280850/sliding-down-inputs-with-jquery – Jordan

+0

@ guest271314 Я посмотрел документацию jQuery, но я все еще немного запутался в том, как реализовать это в том, что Я пытаюсь сделать это, это первый раз, когда я действительно обманывался с анимацией jQuery, любым советом? – Jordan

ответ

2

Используйте .insertAfter()

jQuery(document).ready(function() { 
    'use strict'; 
    var input = 1, 
     blank_line = $('.input_line'); 

    $('#add').click(function() { 
     var newElement = blank_line.clone(true).hide(); 
     $('form').append(newElement); 
     $(newElement).slideDown(); 
    }); 

    $('form').on('click', '.duplicate', function() { 
     $(this).parent().clone().hide().insertAfter($(this).parent().after()).slideDown(); 
     $('.input_line').last().before($('#add')); 
     input = input + 1; 
    }); 
}); 

JsFiddle http://jsfiddle.net/fbcut00p/5/

Надеется, что это может помочь.

+0

Кажется, что это слишком усложняет мой оригинальный синтаксис ... – Jordan

+0

Я просто отредактировал эту строку, потому что вы сказали, что хотите сдвинуть анимацию вниз, а не просто появляться. $ (this) .parent(). Clone(). Hide(). InsertAfter ($ (this) .parent(). After()). SlideDown(); – RRayasa

+0

не проще было бы это сделать: '$ ('. Input_line'). Last(). Before ($ ('. Add')). Hide(). SlideDown();'? – Jordan

0

необходимо скрыть элемент с помощью функции hide() перед использованием функции slideDown() , это правильно?

см jQuery версии 1.11.3 источник в строках 7614-7626; $.fn.slideDown(), $.fn.slideUp() кажется, псевдоним .show(), .hide() соответственно

// Generate shortcuts for custom animations 
jQuery.each({ 
    slideDown: genFx("show"), // <- 
    slideUp: genFx("hide"), // <- 
    slideToggle: genFx("toggle"), 
    fadeIn: { opacity: "show" }, 
    fadeOut: { opacity: "hide" }, 
    fadeToggle: { opacity: "toggle" } 
}, function(name, props) { 
    jQuery.fn[ name ] = function(speed, easing, callback) { 
     return this.animate(props, speed, easing, callback); 
    }; 
}); 
+0

Я обновил скрипку. Я протестировал вашу скрипку, и эффект работает, но на самом деле она не дублирует ничего, как только вы вводите ввод. – Jordan

+0

@Jordan _ «на самом деле он ничего не дублирует, как только вы вводите ввод». «Ввод« abc », щелчок« дубликат », клонированный элемент, кажется, скользит вниз, здесь? Можно описать _« он на самом деле ничего не дублирует », _? элемент или ввод текста? См. с помощью '# add' http://jsfiddle.net/fbcut00p/1/ – guest271314

+0

Да, у меня есть, добавление нового поля отлично работает, но я все еще не курил ее вперед с добавлением этого же эффекта к кнопке «duplicate»? – Jordan

Смежные вопросы