我有一系列从.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丹克。
单击“全选”后应在“”中显示什么内容? – Alexander 2013-03-16 15:20:13
Article 1 Article 2 我会将其添加到原始问题中。谢谢。 – 2013-03-16 15:28:12
@ Mr.Loop - 只是一个注释:“从jQuery 1.7开始,.delegate()已被.on()方法取代。”请参阅http://api.jquery.com/delegate/ – Hogan 2013-03-16 21:20:17