jQuery - 获取基于标识符的下一个选项的总值

时间:2015-03-09 13:03:07

标签: javascript jquery select option

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"> -  -  - Child task 1.1</option>
<option data-task-hours="25" value="4"> -  -  - Child task 1.2</option>
<option data-task-hours="50" value="5"> -  - Child task 2</option>

jQuery代码,用于获取所选下一个选项的总值:

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;
    }
});

该代码仅适用于父任务。如果我添加一个小孩,即Child 1.1小时= 25,它就不会允许。我们如何分解子任务时间,即50可以进一步细分为25+25,并检查Child task 1是否有子孩Child task 1.1Child task 1.2

有没有更好的方法来区分parent and child task哪些可以进一步细分为sub-child task

1 个答案:

答案 0 :(得分:0)

我会在每个项目上添加一个data-parent-id:

<option data-task-hours="100" data-parent-id="0" value="1"> - Parent Task</option>
<option data-task-hours="50" data-parent-id="1" value="2"> -  - Child task 1 </option>
<option data-task-hours="25" data-parent-id="2" value="3"> -  -  - Child task 1.1</option>
<option data-task-hours="25" data-parent-id="2" value="4"> -  -  - Child task 1.2</option>
<option data-task-hours="50" data-parent-id="1" value="5"> -  - Child task 2</option>