JQuery, используя родительский метод, чтобы добавить новую строку - PullRequest
0 голосов
/ 26 января 2011

Здесь У меня есть html-код, в котором я вставил текстовое поле подряд. Как можно использовать кнопку «+» в той же таблице при использовании функции ТОЛЬКО parent() для создания новой строки в таблице, содержащей другое текстовое поле ввода?

У меня есть пример jQuery-кода, но он не работает:

          $(".plus").live("click", function(){
        var parent = $(this).parent().parent().parent(".iteration");
 parent.after('<table width="100%" border="0" bordercolor="#000000"><tr><td colspan="2"><label><input type="text" value="Create a task for this iteration" size="75%" height="25px"/></label></td></tr></table>');

        var nbinput = parent.find("input[type='text']").length;
        if(nbinput == 5)
            parent.find(".plus").attr("disabled","disabled");
        else if(nbinput == 2)
            parent.find(".moins").attr("disabled","");
    });

    $(".moins").live("click", function(){       
        var parent = $(this).parent().parent().parent(".iteration");
        parent.children("input").last().remove();
        var nbinput = parent.find("input[type='text']").length;
        if(nbinput == 4)
            parent.find(".plus").attr("disabled","");
        else if(nbinput == 1)
            parent.find(".moins").attr("disabled","disabled");
    });

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Ну, некоторое упрощение будет иметь большое значение:

var parent, attribute_toggle;

attribute_toggle = function (nbinput, parent) {
    switch(nbinput) {
        case 5:
            parent.find('.plus').attr('disabled', 'disabled');
        case 4:
            parent.find('.plus').removeAttr('disabled');
        case 2:
            parent.find('.moins').removeAttr('disabled');
        case 1:
            parent.find('.moins').attr('disabled', 'disabled');
    }
};

$('.plus').live('click', function() {
    parent = $(this).parents('.iteration:first');
    parent.after('... removed for brevity ...');
    attribute_toggle(parent.find('input:text').length, parent);
});
$('.moins').live('click', function() {
    parent = $(this).parents('.iteration:first');
    parent.children('input:last').remove();
    attribute_toggle(parent.find('input:text').length, parent);
});

Обновлен, чтобы его было легче читать, и включил коммутатор в функцию.

Теперь, когда он стал более разборчивым, объясните, что происходит, когда вы пытаетесь запустить этот код, и сопоставьте это с тем, что вам хотелось бы.

1 голос
/ 26 января 2011

Я думаю, что это ваша серия parent().Похоже, вы не учитываете такие элементы, как td и tr.просто попробуйте var parent = $('.iteration')

Я не знаю точного ожидаемого результата для пользовательского интерфейса, поэтому не могу сказать больше.

...