2013-03-16 38 views
0

我有一系列从.csv文件读取时动态创建的复选框。在制作了一系列复选框之后,将添加另一个“全选”。这个想法是,'全选'复选框,也是动态创建的,当选中时,将检查上面的所有复选框。每个复选框设置为将其名称属性放在下面的textarea中。为动态数据触发“点击”事件

下面是一个示例,它显示了HTML看起来像之后它从csv文件中拉出。

<div class="checkboxes"> 
    <input type="checkbox" class="article" name="Article 1" />Article 1 <br> 
    <input type="checkbox" class="article" name="Article 2" />Article 2 <br> 
    <input type="checkbox" class="select-all" name="select-all" />Select all 
</div> 
<textarea></textarea> 

现在我使用.delegate的文章复选框,并选择,所有注册一个点击事件

//clicking dynamically created input.article 
$('div.checkboxes').delegate('input.article','click',function(){ 
    $('textarea').val($(this).attr('name') + '/n'); //adds 'name' attr and a linebreak 
}); 

//clicking dynamically created select-all 
$('div.checkboxes').delegate('input.select-all','click',function(){ 
    $('div.checkboxes').find('input.article').prop('checked',true); //works to select all articles 
}); 

的问题是,即使寿“全选”做检查所有的文章复选框,它实际上并没有触发该行:

$('textarea').val($(this).attr('name') + '/n'); //adds 'name' attr and a linebrea 

name属性未放置在textarea中。

同样,所有文章复选框正在通过“全选”进行检查。这只是'触发''点击'事件。

在textarea的,理想的情况出现:

第2条

这又如何实现呢?

谢谢你的帮助。

解决:

$('div.checkboxes').delegate('input.select-all','click',function(){ 

     if ($(this).is(':checked')){ 

     $('input.article[type=checkbox]').prop('checked',true); 
     $('input.article[type=checkbox]').each(function(){ 
     $(this).trigger('click'); 
     }); 
     } 
    }); 

Vielen丹克。

+0

单击“全选”后应在“