JavaScript不听bool更新的值

时间:2015-09-02 17:32:07

标签: javascript jquery

当代码附加到.block元素后,(bool) flag变量应该为false,该变量应为false,该元素应该停止附加多个输入项。

JsFiddle:https://jsfiddle.net/hasantg/ja0he104/

$(document).ready(function(){

    $('a.action').on('click', function(e){
        e.preventDefault();
        var $this  = $(this),
            type  = $this.data('type'),
            $block = $this.closest('div.block');
        if (type == 'newform') {
            var $form = $('<div class="form"><input type="text" /></div>'),
                flag = true;
            if (flag == true) {
                $block.append($form);
                flag = false;
            }
            // flag = false;
        }
    });

});

我无法理解我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

#!/bin/bash
#$ -cwd
#$ -N Sample_S06-9841_A4_primary
#$ -S /bin/bash
module load picard/1.130

java -Xmx12g -XX:MaxPermSize=8192m -XX:+UseCompressedOops -Djava.io.tmpdir=/mnt/work1/users/home2/loldfiel/tmp -jar $picard_dir/picard.jar AddOrReplaceReadGroups INPUT=/mnt/work1/users/roehrlgroup/GCT_2/star_aligner/final_alignment/Sample_S06-9841_A4_primary/Aligned.out.sam OUTPUT=./Sample_S06-9841_A4_primary/S06-9841_A4_primary_rg.bam SORT_ORDER=coordinate RGID=S06-9841_A4_primary RGLB=lib RGPL=Illumina RGPU=none RGSM=Sample_S06-9841_A4_primary

修改:效果更新,仅在需要时创建$(document).ready(function(){ $('a.action').each(function() { var flag = true; $(this).on('click', function(e){ e.preventDefault(); var $this = $(this), type = $this.data('type'), $block = $this.closest('div.block'); if (type == 'newform' && flag) { var $form = $('<div class="form"><input type="text" /></div>'); $block.append($form); flag = false; } }); }); });

编辑:在每个操作选择器上循环并为每个操作选择器创建标记。

答案 1 :(得分:2)

每个元素都需要flag。您可以使用@ TbWill4321的方法,或者您可以尝试这种方法。

您可以做的是为每个元素添加data属性。让我们说数据属性的名称是添加,这意味着如果输入是否添加到元素。

click事件中,您可以检查该标志是否存在,如果不存在则添加它

if (typeof $this.data('added') == 'undefined') {
    $this.data('added', false);
}

然后检查if条件中的标记值,如下所示

if (type == 'newform') {
    var $form = $('<div class="form"><input type="text" /></div>');
    var flag = $this.data('added');

    if (flag == false) {
        $block.append($form);
        $this.data('added', true);
    }
}

这是一个有效的 JSFIDDLE 。希望这有帮助。