jQuery触发事件迷失了

时间:2018-04-30 09:34:25

标签: jquery triggers jquery-select2

我遇到了一个问题,我可以使用强力延迟来解决这个问题,并且如果我可以从jQuery调用中获得回调,并且想知道是否有人对此问题有另一种了解,我也可以解决。

以下是代码:

    /*
     * Now fill the fields then lastely selecte the Select2 List value to display selected task
     */
     for (var i = 0; i <  numMilestoneTasks; i++) {
        $($(".ctaskSelector")[i]).val(taskData[i].task_ID).trigger('change');
        $($(".project_task_ID")[i]).val(taskData[i].project_task_ID )
        $($(".task_allocated_hours")[i]).val(taskData[i].allocated_hours )
        $($(".task_start_date")[i]).val(taskData[i].start_date );
        $($(".task_end_date")[i]).val(taskData[i].end_date );
        $($(".task_tag_info")[i]).val(taskData[i].tags );
    }

现在它的工作方式是我有一个名为.ctaskSelector的Select2下拉列表,它已经预先填充了5个选项,而我想要显示的那个由语句触发:

$($(".ctaskSelector")[i]).val(taskData[i].task_ID).trigger('change');

正如您所看到的,numMilestoneTasks选择2下拉列表。问题是循环非常快,只有第一个select2选项被激活,触发器在其他选项上丢失。我可以通过放慢速度来使它工作,as with the code below。如果目标是纯输入文本框,它也可以工作,因此它可能是一个select2问题。其他一些方法,如回调是理想的,但我看不出如何去做。

setTimeout(function() {
 for (var i = 0; i <  numMilestoneTasks; i++) {
    $($(".ctaskSelector")[i]).val(taskData[i].task_ID).trigger('change');
    $($(".project_task_ID")[i]).val(taskData[i].project_task_ID )
    $($(".task_allocated_hours")[i]).val(taskData[i].allocated_hours )
    $($(".task_start_date")[i]).val(taskData[i].start_date );
    $($(".task_end_date")[i]).val(taskData[i].end_date );
    $($(".task_tag_info")[i]).val(taskData[i].tags );
 }
}, 100);

有没有人对我如何解决这个问题有任何见解?

0 个答案:

没有答案