[英]need Jquery foreach function to find out nested UL LI checked checkbox items
I need a jQuery function which iterates nested ul li components and find out the numbers which is defined in .ch
class with checkboxes are checked and only those will be push in array.我需要一个 jQuery 函数,它迭代嵌套的 ul li 组件并找出在
.ch
类中定义的数字,复选框被选中,只有那些将被推入数组。
<ul>
<li><input type="checkbox" name="one" value="one"><span class="ch">20</span>AS One</li>
<li><input type="checkbox" name="two" value="two"><span class="ch">43</span>AS Two</li>
<li><input type="checkbox" name="user_roles" value="user_roles"><span class="ch">93</span>Users & Roles <!-- SHOULD CHECK HERE -->
<ul>
<li><input type="checkbox" name="user_role" value="add"><span class="ch">15</span>Add</li>
<li><input type="checkbox" name="user_role" value="delete"><span class="ch">234</span>Delete</li> <!-- CHECK HERE -->
</ul>
</li>
</ul>
Full code完整代码
HTML HTML
<ul class="tree" id="tree">
<li><input type="checkbox" name="account_settings" value="yes"><span class="ch">111</span>Account Settings <!-- AND SHOULD CHECK HERE -->
<ul>
<li><input type="checkbox" name="one" value="one"><span class="ch">20</span>AS One</li>
<li><input type="checkbox" name="two" value="two"><span class="ch">43</span>AS Two</li>
<li><input type="checkbox" name="user_roles" value="user_roles"><span class="ch">93</span>Users & Roles <!-- SHOULD CHECK HERE -->
<ul>
<li><input type="checkbox" name="user_role" value="add"><span class="ch">15</span>Add</li>
<li><input type="checkbox" name="user_role" value="delete"><span class="ch">234</span>Delete</li> <!-- CHECK HERE -->
</ul>
</li>
</ul>
</li>
<li><input type="checkbox" name="rl_module" value="yes"><span class="ch">199</span>RL Module</li>
<li><input type="checkbox" name="rl_module" value="yes"><span class="ch">154</span>Accounting
<ul>
<li><input type="checkbox" name="vat" value="yes"><span class="ch">122</span>VAT</li>
<li><input type="checkbox" name="bank_account" value="yes"><span class="ch">233</span>Banking
<ul>
<li><input type="checkbox" name="view" value="yes"><span class="ch">23</span>View</li>
<li><input type="checkbox" name="crud" value="yes"><span class="ch">12</span>CRUD</li>
</ul>
</li>
</ul>
</li>
</ul>
JavaScript JavaScript
$('input[type=checkbox]').click(function(){
if(this.checked){
$(this).parents('li').children('input[type=checkbox]').prop('checked',true);
}
$(this).parent().find('input[type=checkbox]').prop('checked',this.checked);
});
var phrases = [];
$('.tree').each(function(){
var phrase = '';
$(this).find('li').each(function(){
var current = $(this);
if(current.children().size() > 0) {return true;}
phrase += $(this).text();
});
phrases.push(phrase);
});
// note the comma to separate multiple phrases
alert(phrases);
CSS CSS
.ch {display:none}
Demo: https://jsfiddle.net/qof1dxn7/演示: https : //jsfiddle.net/qof1dxn7/
HTML: HTML:
<ul>
<li>
<input type="checkbox" name="one" value="one"><span class="ch">20</span>AS One</li>
<li>
<input type="checkbox" name="two" value="two"><span class="ch">43</span>AS Two</li>
<li>
<input type="checkbox" name="user_roles" value="user_roles"><span class="ch">93</span>Users & Roles
<!-- SHOULD CHECK HERE -->
<ul>
<li>
<input type="checkbox" name="user_role" value="add"><span class="ch">15</span>Add</li>
<li>
<input type="checkbox" name="user_role" value="delete"><span class="ch">234</span>Delete</li>
<!-- CHECK HERE -->
</ul>
</li>
</ul>
JS JS
$(function() {
$('input:checkbox').change(function() {
var arr = [];
$('input:checked').each(function () {
arr.push( parseInt($(this).next('.ch').text()) );
});
console.log(arr);
});
});
$('input').on('change', function () {
var numbers = '';
$('input:checked').each(function () {
numbers += $(this).next('.ch').text() + ', ';
});
alert(numbers);
});
jsFiddle: http://jsfiddle.net/Z82FR/34/ jsFiddle: http : //jsfiddle.net/Z82FR/34/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.