jQuery 使用父方法添加新行

发布于 2024-10-14 13:38:16 字数 1270 浏览 4 评论 0原文

这里 我有一个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");
    });

Here I have a html code where I have input textbox planted in a row. How can I use the '+' button in the same table while using ONLY parent() function to create a new row within the table that contains another input textbox?

I have some sample jQuery code here but they don't really work:

          $(".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");
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

贱人配狗天长地久 2024-10-21 13:38:16

嗯,一些简化将大有帮助:

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);
});

更新为更易于阅读,并将开关合并到一个函数中。

现在它更清晰了,请解释一下当您尝试执行以下操作时会发生什么运行此代码,并将其与您希望发生的情况进行对比。

Well, some simplification will go a long way:

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);
});

Updated to be easier to read, and merged the switch into a function.

There, now that it is a bit more legible, explain what happens when you try to run this code, and contrast that with what you would like to happen.

冷情 2024-10-21 13:38:16

我认为这是你的parent()系列。看来您没有考虑 td 和 tr 等元素。只是尝试 varparent = $('.iteration')

我不知道 UI 的确切预期结果,所以我不能说更多。

I think it's your series of parent(). It looks like you're not factoring in elements such as the td and tr. just try var parent = $('.iteration')

I don't know the exact expected outcome for the UI so i can't say more beyond that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文