проблема с добавлением ввода в jQuery - PullRequest
0 голосов
/ 22 июля 2011

почему после двух щелчков по этому коду добавляется несколько входных данных вместе?

$('.add_input').live('click', function () {
            var scntDiv = '.'+$(this).closest('div.find_input').find('div').attr('class');
            var i = $('.adding').size();
            var input = $(scntDiv).clone().wrap("<div>").parent().html();
            alert(scntDiv)
            $(scntDiv + ' .add_input').remove();            
            $(input).appendTo(scntDiv);
            $('<div><a href="" class="remove_input"></a></div>').appendTo('.add_in');
            $(scntDiv + ' .add_in div a:first').remove('')
            i++;
            return false;
        });

html: (я использую этот html дважды)

<div class="column find_input">
    <div class="ai_service">
            <div class="column">
                <div class="mediumCell">
                    <input type="text" name="name" style="width: 160px;" placeholder="خدمات دیگر" title="نام پکیج تور خارجی">
                </div>
            </div>
            <div class="column" style="margin: 5px 3px;">
                <div class="mediumCell add_in">
                    <a href="" class="add_input"></a>
                </div>
            </div>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 22 июля 2011

Хм, если вы просто пытаетесь добавить дополнительное поле ввода, ваш код кажется слишком сложным для этого ... Попробуйте?

$('a.add_input').live('click', function(e) {
    e.preventDefault();
    var $this = $(this);
    var $wrapper = $this.closest('div.find_input');
    var $input = $wrapper.find('input[name=name]').eq(0).clone();
    $wrapper.children('div').eq(0).append($input);
};

Я не копировал все из вашего кода,просто клонирование / добавление нового ввода.Если вы разместили упрощенный код, а мой пример не подходит, прошу прощения.Кроме того, я думаю вы хотите добавить клонированный ввод в div.ai_service?

С точки зрения того, почему ваш исходный код добавляет несколько входов, процесс клонирования, который вы проходите, вероятно, сначала клонирует один вход, добавляет его, снова клонирует все (2 входа), добавляет 2 и так далее.Вы можете использовать $ (). Eq (0), чтобы ограничить ваш объект jQuery первым найденным элементом, который соответствует вашему селектору.

0 голосов
/ 22 июля 2011

Попробуйте это

 $('a.add_input').live('click', function (e) {
    e.preventDefault();
    var $column = $(this).closest("div.column");
    var input = $column.prev("div.column").clone().wrap("<div />").parent().html();
    $column.before($(input));

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...