全局计数器变量

时间:2014-01-09 04:18:53

标签: javascript jquery

我有一个代码可以动态添加和删除表单控件。添加和删​​除方法工作正常。但我喜欢如果只存在一个控件,而不是删除它。

我在$(document).ready scope:

之外定义了下一个var
var Alumnos = {};

并在$(文件).ready:

内初始化
// Valor inicial de casilleros renderizados.
Alumnos.count = 3;

删除控件的方法是:

// Elimina un bloque
$(document).on('click','.closable',function(){
    if(Alumnos.count > 1){
        var idRow = $(this).attr('data-toggle');
        var victim = $(idRow + " .row-fluid:last-child");
        victim.remove();

        var childs = $(idRow).children();
        if(childs.length === 0)
        {
            $(idRow).remove();
            $(this).remove();
            Alumnos.count -= 1;

        }
    }   
    console.log(Alumnos.count);
    return false;
});

删除后,Alumnos.count值仍然存在。有什么想法吗?

更新1

当用户点击“添加更多”时,代码从原型创建一个包含3个控件的表单行。 因为,我不能用儿童数。 我需要用户不要删除所有控件。

2 个答案:

答案 0 :(得分:2)

我认为你应该:

 if(Alumnos.count >= 1){  //Probably if there is only 1, it's erasable.  You had >

将减量移到外面,如下:

    var childs = $(idRow).children();
    if(childs.length === 0)
    {
        $(idRow).remove();
        $(this).remove();            
    }
    Alumnos.count -= 1;  //This was moved

希望这会有所帮助。干杯

答案 1 :(得分:0)

感谢您的所有回复!!我找到了控制元素删除的方法与子计数。可能不是最好的代码,但有效。

$(document).on('click','.closable',function(){

    // Get the id of the row.
    var dataToggle = $(this).attr('data-toggle');
    // Get the row
    var row = $(dataToggle);

    // if isnt first row (#id0), ok, remove all if you want.
    // if is first row (#id0) and have more than one child, happy remove ^^
    if((dataToggle === "#id0" && row.children().length > 1) || dataToggle !== "#id0"){

        // remove code...
    }   

    return false;
});