jQuery - nextAll() 选择器用于父子子子项
jQuery - nextAll() selector for Parent-Child-Sub Child
HTML:
<option data-task-hours="100" value="1"> - Parent Task</option>
<option data-task-hours="50" value="2"> - - Child task 1 </option>
<option data-task-hours="50" value="5"> - - Child task 2</option>
jQuery 以获取Parent Task
的子项
var selectedOption = $('#dropDownId option:selected')
var selectedOptionValue = selectedOption.data('task-hours');
var sum = 0;
selectedOption.nextAll().each(function(){
if (sum < selectedOptionValue) {
sum += $(this).data('task-hours');
} else {
sum = selectedOptionValue;
return false;
}
});
这给出了子任务的总价值 Parent Task
。 如果那时我需要在所需的 HTML 下添加子子Child Task 1
子级将是
<option data-task-hours="100" value="1"> - Parent Task</option>
<option data-task-hours="50" value="2"> - - Child task 1 </option>
<option data-task-hours="25" value="3"> - - - Sub Child task 1.1</option>
<option data-task-hours="50" value="5"> - - Child task 2</option>
nextAll()
将从 doprdown 获取任何选定选项下的所有后续选项。我怎么知道Child Task 1
是否有考虑到亲子子关系的Sub Child task 1.1
?
您需要为父子层次结构添加属性,例如,
对作为任何父选项的子选项的子项使用数据父属性,例如data-parent="value of parent option"
(data-parent="2")
所以 html 看起来像,
<option data-task-hours="100" value="1"> - Parent Task</option>
<option data-task-hours="50" value="2"> - - Child task 1 </option>
<option data-task-hours="25" value="3" data-parent="2"> - - - Sub Child task 1.1</option>
<option data-task-hours="50" value="5"> - - Child task 2</option>
现在,您需要在nextAll()中传递data-parent
属性,如下所示:
selectedOption.nextAll("[data-parent='"+selectedOption.val()+"']").each(function(){
if (sum < selectedOptionValue) {
sum += $(this).data('task-hours');
} else {
sum = selectedOptionValue;
return false;
}
});
JSFiddle 你可以得到总任务小时数:
var selectedOption = $('#dropDownId option:selected')
var selectedOptionValue = selectedOption.data('task-hours');
var sum = 0;
var currentLevel = selectedOption.text().split('-').length;
selectedOption.nextAll("option").each(function() {
if(this.text.split('-').length > currentLevel){
if (sum < selectedOptionValue) {
sum += $(this).data('task-hours');
} else {
sum = selectedOptionValue;
return false;
}
}
});
console.log(sum);
相关文章:
- 将函数的上下文应用于javascript变量
- keyup事件处理程序更改焦点不适用于快速键入
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- PHP中的setcookie仅适用于localhost
- 包括用于facebook评论框的JavaScript SDK
- 如何检测用于WebGL的专用或集成显卡
- ng更改事件不适用于Dropdown
- 用于搜索的聚合物嵌套绑定
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- JS编译器/包管理器,用于版本控制
- 将CSS应用于printWindow.print();在Javascript中
- 用于'魔术串'属性
- 用于检查数组中是否存在元素的javascript自定义方法
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 在ajax成功后,cluetip不适用于首次点击活动元素
- D3.js模式不适用于弧形或圆环图
- jQuery - nextAll() 选择器用于父子子子项
- Jquery方法选择,用于移动到下一个父子