多次调用jQuery函数,并仅对兄弟姐妹执行相关操作

时间:2014-04-10 12:50:00

标签: jquery html arrays alert

我正在制作清单,在此清单中您可以添加/删除任务,并为每项任务设置截止日期。截止日期等于当前时间时,会显示警告。

当只有一个任务时,它工作正常,但如果我有更多任务,它只显示第一个任务的警报。

当确认警报时,取消选中警报的任务复选框(右侧的绿色框),但这会取消选中所有任务的警报复选框,而不是仅取消确认。

猜猜这需要用数组左右完成,但是我没有让它工作..有谁知道如何解决这个问题?

提前Tx!

我正在链接到我在此fiddle.

中获得的所有内容

HTML:

<div class='todo_list'>
<div class='add_list'>&#43; List</div><br>
<h3 contenteditable='true'>New List</h3>
<ul>
    <li>
        <input type='checkbox' class='task_status'>
        <p class='task' contenteditable='true'> </p>
        <input type='datetime-local'>
        <input type='checkbox' class='alert_status'>
    </li>
</ul>
<div class='add_task'>&#43;</div><br>
</div>

jQuery(只有出现问题的部分,请参阅整个文档的小提琴)

setInterval(function checkAlerts(){
//Set current date & time
var date = new Date();
var month = date.getMonth()+1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var currentDate = date.getFullYear() + '-' +
((''+month).length<2 ? '0' : '') + month + '-' + ((''+day).length<2 ? '0' : '') + day + 'T' + ((''+hours).length<2 ? '0' : '') + hours + ':' + ((''+minutes).length<2 ? '0' : '') + minutes;

//Set task deadline
var taskDeadline = $('.alert_status:checked').parent().find("input[type='datetime-local']").val();
//Set task text
var taskText = $('.alert_status:checked').parent().children('p').html()
//Check if task deadline matched current time
if ( currentDate ==  taskDeadline) {
    //If so, give an alert
    if(confirm( taskText ) ){
        //If confirmed, uncheck task alert
        $('.alert_status:checked').prop('checked', false)
    }
    else{
        //Do nothing
    }
};

}, 3000);

1 个答案:

答案 0 :(得分:1)

你走了 http://jsfiddle.net/hBz7R/5/

主要的变化是......

$.each($('.alert_status:checked'), function (index, value) {
   var currentAlert = $(this);
   // your code...
}