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