当代码附加到.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;
}
});
});
我无法理解我在这里做错了什么?
答案 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 。希望这有帮助。