我有一个简单的脚本,当你选择一所学校时,它建议员工是否可以重新分配。
目前,如果它返回多个结果,我会多次在屏幕上显示该消息。例如:如果有3名工作人员,我可以
Staff Member/s are available
Staff Member/s are available
Staff Member/s are available
当我只想要一条线时。
Staff Member/s are available
这是循环遍历每个可用员工的代码,然后调用list
来过滤并显示结果。
为简单起见,我剥去了list
只是为了展示它的作用。
if (staff.length >=1) {
$.each($.unique(staff.split(',')), function(key, val) {
list(val);
});
}
function list(ID) {
if($.inArray(ID, myArray) != -1) {
var available = true;
} else {
var all = true;
}
if (available) $("#status").prepend('<li>Staff Member/s are available</li>');
}
在列表中,如果已经显示消息,我该如何停止显示消息?
我已经尝试为此添加一个计数器,只显示staffCount === 1
,但似乎无效。
任何想法?
由于
答案 0 :(得分:3)
问题是因为您在每次迭代中都在调用append()
。相反,您可以将逻辑更改为仅对阵列中所有项的结果执行检查。试试这个:
if (staff.length) {
var available = false;
$.each($.unique(staff.split(',')), function(key, val) {
if ($.inArray(val, myArray) != -1) {
available = true;
return false;
}
});
if (available)
$("#status").prepend('<li>Staff Member/s are available</li>');
}
答案 1 :(得分:0)
不能说是最好的,但这是另一种方法:每次添加时都将其删除。
...
if (available) $("#status").prepend(function() {
$("#avail").remove();
return '<li id="avail">Staff Member/s are available</li>
});
或者创建一个元素并替换所有HTML:(@ diavolic)
...
if (available) $("#status").prepend('<li id="avail" />').find("#avail").html('Staff Member/s are available')
答案 2 :(得分:0)
尝试替换
if (available) $("#status").prepend('<li>Staff Member/s are available</li>');
到
if (available) $("#status").html('<li>Staff Member/s are available</li>');