Jquery 为多个 returns 显示一个结果?
Jquery show one result for multiple returns?
我有一个简单的脚本,当你 select 一所学校时,它会建议是否可以重新分配员工。
目前,如果它 returns 多个结果,我会多次在屏幕上显示该消息。例如:如果有 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
时显示,但似乎不起作用。
有人有什么想法吗?
谢谢
问题是因为您在每次迭代中都调用了 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>');
}
不能说是最好的,但还有另一种方法:每次添加时都将其删除。
...
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')
尝试替换
if (available) $("#status").prepend('<li>Staff Member/s are available</li>');
到
if (available) $("#status").html('<li>Staff Member/s are available</li>');
我有一个简单的脚本,当你 select 一所学校时,它会建议是否可以重新分配员工。
目前,如果它 returns 多个结果,我会多次在屏幕上显示该消息。例如:如果有 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
时显示,但似乎不起作用。
有人有什么想法吗?
谢谢
问题是因为您在每次迭代中都调用了 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>');
}
不能说是最好的,但还有另一种方法:每次添加时都将其删除。
...
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')
尝试替换
if (available) $("#status").prepend('<li>Staff Member/s are available</li>');
到
if (available) $("#status").html('<li>Staff Member/s are available</li>');